我正在尝试自学如何在PHP中使用AJAX。但是,我无法获取我的(可能已损坏的)AJAX代码来更改my things变量的值。相反,会发生什么是重新加载index.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>
关于我搞砸了哪里的任何线索?
答案 0 :(得分:2)
我至少可以看到两个问题:
$_GET['things']
的变量。相反,您总是将其设置为0
,因此您将永远不会看到任何其他内容; head
等。您可能希望单独的文件只发回您真正需要的内容。单独的php文件的一个示例就是回显发送的内容:
<?php
echo 'I sent the number: ' . intval($_GET['things']);
现在您应该向此文件发出ajax请求,而不是index.php
。
答案 1 :(得分:-3)
您应该删除"<?php echo $things; ?>";
周围的引号并改为var things = <?php echo "'".$things."'"; ?>
。