不明白为什么我不用我的脚本改变我的php变量

时间:2015-01-26 21:17:15

标签: javascript php ajax

我正在尝试自学如何在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>

关于我搞砸了哪里的任何线索?

2 个答案:

答案 0 :(得分:2)

我至少可以看到两个问题:

  • 您没有在任何地方使用要发送回服务器$_GET['things']的变量。相反,您总是将其设置为0,因此您将永远不会看到任何其他内容;
  • 您要发布到原始的php文件。这意味着响应将是完整的html页面,包括head等。您可能希望单独的文件只发回您真正需要的内容。

单独的php文件的一个示例就是回显发送的内容:

<?php
echo 'I sent the number: ' . intval($_GET['things']);

现在您应该向此文件发出ajax请求,而不是index.php

答案 1 :(得分:-3)

您应该删除"<?php echo $things; ?>";周围的引号并改为var things = <?php echo "'".$things."'"; ?>