Я пробую свои силы на 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
?И не вся страница?