我会将这个问题分成几段以便于引用。
我有一个使用 Ajax 调用 php 文件的脚本;一旦按下按钮,脚本就会执行。
PHP 文件包含一个简单的代码,该代码将数字加 1。
<?php $response = $response + 1; echo $response; ?>
但是,多次按下按钮时会出现问题。我做了一些研究,我可以得出结论,要么是我编写的简单 PHP 脚本有问题,要么代码每次重新加载页面时只执行一次。
我读过一篇文章,解释了如果我希望 Ajax 命令在同一个脚本中执行多次,则使用 Javascript 进行大量工作,但我不明白当按钮被按下。
问题:每次按下按钮时 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 中保存响应来修复它。
session_start();
if (isset($_SESSION['response'])) {
$_SESSION['response'] = $_SESSION['response'] + 1;
} else {
$_SESSION['response'] = 1;
}
echo $_SESSION['response'];
关于php - 使用 Ajax 和 PHP 进行数据输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721017/