Результат XMLHttpRequest исчезает - PullRequest
0 голосов
/ 27 сентября 2011

Я пробую свои силы на PHP.И я приземлился при подключении клиент-сервер.

Теперь у меня есть серверный скрипт, который применяет случайную математику к значению x и ay, которое он получает через 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";
    }
?>

Клиент вызывает этот скрипт, когда пользователь нажимает кнопку «Отправить» в моей форме:

<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 Ответ

1 голос
/ 27 сентября 2011

это потому, что вы используете кнопку отправки .. изменить

<input type="submit" to <input type="button"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...