2011-09-27 3 views
0

나는 PHP로 손을 잡고있다. 그리고 나는 클라이언트 - 서버 연결성에 착수했습니다. 사용자가이 "보내기"를 누를 때XMLHttpRequest의 결과가 사라짐

<?php 
    $farr = array(
     create_function('$x,$y', 'return "x + y = ".($x+$y);'), 
     create_function('$x,$y', 'return "x - y = ".($x-$y);'), 
     create_function('$x,$y', 'return "x * y = ".($x*$y);'), 
     create_function('$x,$y', '$returnVal = "x/y = "; if($y==0){$returnVal.="NaN (y value = 0)";}else{$returnVal.=($x/$y);}return $returnVal;')   
    ); 

    $x = $_GET["x"]; 
    $y = $_GET["y"]; 
    $i = rand(0,3); 
    try{ 
     $f = $farr[$i]; 
     $result = $f($x,$y); 
     echo "".$result; 
    } catch(Exception $e) { 
     echo "An exception occurred while accessing functions"; 
    } 
?> 

이 클라이언트는이 스크립트를 호출 버튼 :

지금 나는 XMLHttpRequest를 통해 얻을 수 있다는 x와 바깥 값으로 임의 수학을 적용 서버 측 스크립트가 내 양식에 :

<html> 
    <head> 
     <title> 
      Welcome 
     </title> 
     <script type="text/javascript"> 
      function calculate(x, y){ 
       var xmlhttp; 
       if(x.length==0){ 
        document.getElementById("result").innerHTML = "x is not set"; 
        return; 
       } 
       if(y.length==0){ 
        document.getElementById("result").innerHTML = "y is not set"; 
        return; 
       } 
       if(window.XMLHttpRequest){ 
        xmlhttp = new XMLHttpRequest(); 
       } else { 
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
       xmlhttp.onreadystatechange=function(){ 
        if(xmlhttp.readyState==4 && xmlhttp.status==200){ 
         document.getElementById("result").innerHTML = xmlhttp.responseText; 
        } 
       } 
       xmlhttp.open("GET", "math.php?x="+x+"&y="+y, true); 
       xmlhttp.send(null); 
      } 
     </script> 
    </head> 
    <body> 
     <form> 
      x: <input type="text" name="x"/><br/> 
      y: <input type="text" name="y"/><br/> 
      <input type="submit" value="Send" onclick="calculate(x.value, y.value)"/> <input type="reset" value="Reset"/> 
      <p>Result: <div id="result">something</div></p> 
     </form> 
    </body> 
</html> 

결과는 양식의 끝에있는 div에 저장됩니다. 그러나, 나는 짧은 시간 동안 결과를보고, 다시 사라진다. 나는 페이지가 다시로드되는 것을 의심하지만, XMLHttpRequest의 목적이 아니기 때문에 onreadystatechanged 콜백의 일부만 새로 고쳐지겠습니까? 페이지 전체가 아닌가요?

답변

1
당신이 제출 버튼을 사용하고 있기 때문에입니다

... ... 지금까지 내 웹 기술에 대한 ... 배울 그래서 많은

<input type="submit" to <input type="button" 
+0

찰흙을 변경! – ThaMe90

+0

너 자신에 그렇게 열심히하지 말아라. – mishu

+0

나는 열심히 ... 진실이다. 나는 어제 이것을 시작했다. : P는 초기 연구에서 약간의 HTML과 Javascript를 알고있었습니다. 그러나 나는 아직도 배울 것이 많다. :) 시간 내 주셔서 감사합니다;) – ThaMe90