1

我将把这个问题分成几段,以便于参考。

  1. 我有一个使用 Ajax 调用 php 文件的脚本;一旦按下按钮,脚本就会执行。

  2. PHP 文件包含一个简单的代码,该代码将一个数字加上 1。

    <?php 
    $response = $response + 1;
    echo $response;
    ?>
    
  3. 但是,多次按下按钮时会出现问题。我做了一些研究,可以得出结论,要么是我制作的简单 PHP 脚本有问题,要么代码在每次页面重新加载时只执行一次。

  4. 如果我希望 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>

如果我在某些时候不够清楚,请选择段落编号,我将加深该部分。

4

1 回答 1

1

在您的代码中,$response 始终为 1,因为 php 默认情况下没有状态。您可以通过在会话中保存响应来修复它。

session_start();
if (isset($_SESSION['response'])) {
    $_SESSION['response'] = $_SESSION['response'] + 1;
} else {
    $_SESSION['response'] = 1;
}
echo $_SESSION['response'];
于 2013-03-30T16:54:15.420 回答