使用Ajax和PHP进行数据输出


Data output using Ajax with PHP

为了便于参考,我将这个问题分成几个段落。

  1. 我有一个脚本调用php文件使用Ajax;

  2. 这个PHP文件包含了一个简单的代码,用1加一个数字。

    <?php 
    $response = $response + 1;
    echo $response;
    ?>
    
  3. 然而,当按钮被多次按下时,有些东西出错了。我做了一些研究,我可以得出结论,要么是我所做的简单的PHP脚本有问题,要么是每次页面加载只执行一次代码。

  4. 我读了一篇文章,解释了很多使用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'];