我想教我自己如何在PHP中使用AJAX。但是,我无法获取我的(可能已损坏的)AJAX代码来更改我的$ things变量的值。相反,会发生什么是index.php页面重新加载,并添加一个全新的按钮。这里是我的代码:不明白为什么我不改变我的脚本的php变量
<?php
$things = 0;
?>
<!DOCTYPE html>
<html>
<head>
<title>testing</title>
<script>
function changeMe()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("changetest").innerHTML=xmlhttp.responseText;
}
}
var things = "<?php echo $things; ?>";
things++;
xmlhttp.open("GET","index.php?things="+things,true);
xmlhttp.send();
}
</script>
</head>
<body>
<?php
echo "<p>Things = <span id=\"changetest\"" . $things . "</span></p>";
?>
<button type="button" onclick="changeMe()">Change Content</button>
</body>
</html>
任何线索,我在哪里搞乱?
是不是你没有''''就像:'echo“
Things = ”。 $东西。 “
”;' – SuckerForMayhem 2015-01-26 21:19:31如果你只是去index.php?东西= 1你看到你期望的回应? – 2015-01-26 21:19:56
当你调用index时,事物被初始化为0,当你在这个ajax的GET中传递新的东西时,它并不代表该变量的任何东西,所以'var things = php'总是从0开始。 $ things = 0的页面顶部;让它寻找一个像'$ _GET ['things']'这样的参数并将其设为=。那么问题是,那只会真的有效。你的ajax基本上是试图加载同一页面而不知道它之前的状态是什么,因为你不发送任何新数据,没有任何东西被更新,也没有任何变化,所以它会再次重做相同的东西。 – 2015-01-26 21:23:34