为了便于参考,我将这个问题分成几个段落。
-
我有一个脚本调用php文件使用Ajax;
-
这个PHP文件包含了一个简单的代码,用1加一个数字。
<?php $response = $response + 1; echo $response; ?>
-
然而,当按钮被多次按下时,有些东西出错了。我做了一些研究,我可以得出结论,要么是我所做的简单的PHP脚本有问题,要么是每次页面加载只执行一次代码。
-
我读了一篇文章,解释了很多使用Javascript的工作,如果我想要一个Ajax命令在同一脚本期间多次执行,但我不明白为什么当按钮被按下时它不能执行多次。
问题:PHP文件"post.php"是否每次按下按钮时都执行?是我的PHP文件有问题吗?我如何使脚本加上数字1每次按下按钮?这是因为我需要一些额外的Javascript吗?
脚本的其余部分在这里:
<head>
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","post.php",true);
xmlhttp.send();
}
</script>
</head>
<body>
<p>This button will execute an Ajax function</p>
<button type="button" onclick="loadXMLDoc()">Press here!</button>
<div id="myDiv"></div>
<script type="text/javascript" src="http://www.parameter.dk/counter/5b0d9873158158e08cad4c71256eb27c"></script>
</body>
如果我在某些地方不够清楚,请挑出段落号,我将加深这部分。
在你的代码中$response总是1,因为php默认没有状态。你可以通过在会话中保存响应来修复它。
session_start();
if (isset($_SESSION['response'])) {
$_SESSION['response'] = $_SESSION['response'] + 1;
} else {
$_SESSION['response'] = 1;
}
echo $_SESSION['response'];