Ajax响应整个页面代码

时间:2015-10-14 07:55:37

标签: javascript php jquery ajax

我想简单地从javascript到php获取一个变量,但是php并没有收到我的变量 - 而是收到了整个页面代码。

这是我的测试页:

<html>
  <head>
    <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
    <script>
      $(document).ready(function() {
        $("#button").click(function() {
          var test = "Hallo Welt";
          $.ajax({
            url: "ajax.php",
            type: "post",
            data: {
              test: test
            },
            success: function (response) {
              alert(response);
            },
            error: function(jqXHR, textStatus, errorThrown) {
              alert(textStatus, errorThrown);
            }
          });
        });
      });
    </script>
  </head>

  <body>
    <form>
      <input type="button" id="button" value="Test" style="width:200x">
    </form>

    <?php
      if(isset($_POST["test"])) {
        echo $_POST["test"];
      }
    ?>

  </body>
</html>

有人有提示吗?

问候

3 个答案:

答案 0 :(得分:1)

第一,最好在分离的文件中使用你的PHP代码

第二,如果你想在同一个文件中使用它,就像你在这里一样,你的代码应该是

第3次使用form.on('submit')而不是提交按钮点击

第4次不要忘记添加(e)和e.preventDefault();或者返回false

<?php
    if(isset($_POST["test"])) {
       echo $_POST["test"];
    }else{
 ?>
<html>
  <head>
    <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
    <script>
      $(document).ready(function() {
        $("form").on('submit',function(e) {
          e.preventDefault();
          var test = "Hallo Welt";
          $.ajax({
            url: "ajax.php",
            type: "post",
            data: {
              test: test
            },
            success: function (response) {
              alert(response);
            },
            error: function(jqXHR, textStatus, errorThrown) {
              alert(textStatus, errorThrown);
            }
          });
        });
      });
    </script>
  </head>

  <body>
    <form>
      <input type="button" id="button" value="Test" style="width:200x">
    </form>


  </body>
</html>
<?php } ?>

答案 1 :(得分:1)

我认为首先需要使用单独的php文件,然后在php echo 行之后添加 exit;

    <?php
          if(isset($_POST["test"])) {
            echo $_POST["test"];
            exit;
          }
        ?>

检查并告知我是否遗漏了任何内容。

感谢。

答案 2 :(得分:1)

您不需要有一个单独的PHP文件来处理AJAX请求,尽管这样做会带来好处。如果你有一个单独的文件,比如叫做'data.php',你可以用这样的方式设置那个脚本,这样它就可以处理许多不同的请求 - 每次调用你的ajax函数时,url都是一样的({ {1}})但请求中发送的参数会发生变化。

以下data.php语句仅在exit次请求时遇到,并阻止将html的其余部分发送回您的javascript回调函数。

POST