2014-02-26 5 views
0

는 I 다른 PHP 페이지 (seatmap.php)에 그 값을 제출 2 텍스트 입력 상자의 값을 표시 두 jQuery를 슬라이더와 PHP 페이지 (index.php를)를 가지고 의 index.php 포함 . 하지만 AJAX를 사용하여 onclick 이벤트로 Submit 버튼을 클릭하면 실제로 AJAX를 사용할 때 페이지가 새로 고침/새로 고침됩니다. 나는 아약스 함수가 ​​전혀 사용되지 않는 것처럼 느낀다. 누군가 나를 도울 수 있습니까? 어떻게 작동하게하는지에 대한 아이디어가 있습니까? 모든 종류의 도움을 주시면 감사하겠습니다. 미리 감사드립니다.AJAX를 사용할 때 왜이 PHP가 다시로드됩니까?

<form method="POST" action="index.php"> 

<p class="submitSlider"> 
    <input type="SUBMIT" name="submit" value="Submit" onclick="showAvailable()"> 
</p> 

<div id="slider1Containter"> 

    <p> 
     Time Range: <span class="slider-time">10:00 AM</span> 
    </p> 

    <input type="number" id="startShift" name="startShiftSlider"> 

    <div id="slider"></div> 

</div> 

<div id="slider2Containter"> 

    <p> 
     Time Range: <span class="slider-time2">10:00 AM</span> 
    </p> 

    <input type="number" id="endShift" name="endShiftSlider"> 

    <div id="slider2"></div> 

</div> 

</form> 

그리고 seatmap.php에 대한 코드 : 페이지

<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 
session_start(); 

$startShift = $_POST['startShiftSlider']; 
$endShift = $_POST['endShiftSlider']; 

$_SESSION['startShiftValue'] = $startShift; 
$_SESSION['endShiftValue'] = $endShift; 

$finalStartShiftValue = $_SESSION['startShiftValue']; 
$finalEndShiftValue = $_SESSION['endShiftValue']; 

echo $finalStartShiftValue; 
echo $finalEndShiftValue; 
} 
?> 

그리고 functions.js에 대한 : 여기

index.php를 코드

function showAvailable(){ 
    var xmlhttp; 

    var getStartShift; 
    var getEndShift; 

    if(window.XMLHttpRequest){ 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else{ 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function(){ 
     if(xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     getStartShift = document.getElementById("startShift").value; 
     getEndShift = document.getElementById("endShift").value; 

     xmlhttp.open("GET","seatmap.php?sendStartShift="+getStartShift+"&sendEndShift="+getEndShift,true); 
     xmlhttp.send(); 
     } 
    } 
} 

다른 질문이 중복되었을 수 있습니다.

답변

1

제출 단추 기본 동작은 클릭 할 때 계속 실행됩니다 ('새로 고침'이라고도 함). 기본 동작을 비활성화해야합니다.

<input type="SUBMIT" name="submit" value="Submit" onclick="showAvailable(); return false;"> 

편집 : 당신은 당신의 showAvailable 기능에 거짓 수익을 추가하고 onsubmit하는 온 클릭을 업데이트해야

xmlhttp.onreadystatechange=function(){ 
    if(xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    alert(myRequest.responseText); 
    } 
} 

getStartShift = document.getElementById("startShift").value; 
getEndShift = document.getElementById("endShift").value; 
xmlhttp.open("GET","seatmap.phpsendStartShift="+getStartShift+"&sendEndShift="+getEndShift,true); 
xmlhttp.send(); 
+0

나는이 그것을 대체했다. 하지만 이제 버튼을 클릭하면 값이 표시되지 않습니다. 그래도 도와 ​​줘서 고마워. 어떤 아이디어? – rez

+0

빠른 추측은 readystatechange 함수 내에서 요청을 보내기 때문입니다. 이것은 .send()를 호출 할 때까지 실행되지 않습니다. 마지막 두 줄을 이동하십시오. xmlhttp.open & xmlhttp.send()는 onreadystatechange 정의를 사용합니다. –

+0

나는 그것을 또한했다. 그것은 여전히 ​​값을 표시하지 않습니다 ... – rez

0

: 귀하의 코멘트에 대답.

는 HTML :

<input type="SUBMIT" name="submit" value="Submit" onsubmit="return showAvailable();"> 

JS 코드 :

function showAvailable(){ 
    var xmlhttp; 

    var getStartShift; 
    var getEndShift; 

    if(window.XMLHttpRequest){ 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else{ 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function(){ 
     if(xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     getStartShift = document.getElementById("startShift").value; 
     getEndShift = document.getElementById("endShift").value; 

     xmlhttp.open("GET","seatmap.php?sendStartShift="+getStartShift+"&sendEndShift="+getEndShift,true); 
     xmlhttp.send(); 
     } 
    } 
return false; 
} 
+0

이것은 작동하지 않습니다. false를 반환하는 showAvailable()은 DOM에 다시 전달되지 않습니다. 이 예제를'onclick = "return showAvailable()"과 같이 사용해야 만 하겠지만, 유효한 실행을 위해 false를 반환하는 showAvailable()은 아무런 의미가 없다. –

+0

그것은 여전히 ​​사람을 다시로드합니다. 슬라이더 핸들은 기본값으로 돌아갑니다. – rez

관련 문제