使用AJAX仅获取PHP响应

时间:2016-04-04 09:58:17

标签: javascript php jquery html ajax

我正在尝试使用AJAX传输数据。我有两个文件,一个有PHP,HTML,另一个有JS代码:

test.php的:

<?php
  if($_SERVER["REQUEST_METHOD"] == "POST"){
    if(isset($_POST["txtField"])){
      echo "OK";
    }else{
      echo "NOT OK";
    }
  }

 ?>



<html>
  <head>
    <title>Test Ground</title>
    <script type="application/javascript" src="https://code.jquery.com/jquery-2.2.2.min.js"></script>
    <script type="application/javascript" src="test.js"></script>
  </head>
  <body>
    <input type="text" id="txtField" />
    <input type="button" id="sendInput" value="Send" />
  </body>
</html>

test.js

$(window).on("load", function(){
  $("#sendInput").on("click", sendInput);
});

function sendInput(){
  $.ajax({
    url: "test.php",
    method: "POST",
    data: {txtField: $("#txtField").val()}
  }).done(function(data){
    console.log(data);
  });
}

一切正常,直到我收到PHP对JS的回复。在console.log中显示的数据还包括HTML代码以及PHP响应&#34; OK&#34;。但我只想要PHP响应,没有别的。我知道我可以获取整个数据并删除HTML标签下的所有内容或为PHP创建一个单独的文件,但无论如何都会直接返回PHP的响应而不创建单独的PHP文件。

3 个答案:

答案 0 :(得分:1)

像这样修改你的PHP文件:

<?php
  if($_SERVER["REQUEST_METHOD"] == "POST"){
    if(isset($_POST["txtField"])){
      echo "OK";
    }else{
      echo "NOT OK";
    }
  }

  // This is what i have added.
  if(isset($_GET["fromJS"]))
    die();
  // Till here, so if this GET param is set noting will come up further this.
 ?>



<html>
  <head>
    <title>Test Ground</title>
    <script type="application/javascript" src="https://code.jquery.com/jquery-2.2.2.min.js"></script>
    <script type="application/javascript" src="test.js"></script>
  </head>
  <body>
    <input type="text" id="txtField" />
    <input type="button" id="sendInput" value="Send" />
  </body>
</html>

将您的AJAX调用发送到test.php?fromJS=true

$(window).on("load", function(){
  $("#sendInput").on("click", sendInput);
});

function sendInput(){
  $.ajax({
    url: "test.php?fromJS=true",
    method: "POST",
    data: {txtField: $("#txtField").val()}
  }).done(function(data){
    console.log(data);
  });
}

答案 1 :(得分:1)

您可以使用exit()功能获得正确的回报:

  if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (isset($_POST["txtField"])) {
      echo "OK";
      exit();
    } else {
      echo "NOT OK";
    }
  }

发送Ajax调用时,服务器会返回文件中的所有打印值。所以HTML也被打印出来了。 像那样,你只打印'OK',因为exit()会停止执行文件,只打印OK。

注意,当您使用AJAX时,使用单独的PHP文件和HTML文件更合适。

答案 2 :(得分:0)

你需要2个php文件一个用于ajax,一个用于发送ajax的页面,如果你想坚持一个php页面试试这个代码:

<?php
  if($_SERVER["REQUEST_METHOD"] == "POST"){
    if(isset($_POST["txtField"])){
      echo "OK";
    }else{
      echo "NOT OK";
    }
  } else {

 ?>



<html>
  <head>
    <title>Test Ground</title>
    <script type="application/javascript" src="https://code.jquery.com/jquery-2.2.2.min.js"></script>
    <script type="application/javascript" src="test.js"></script>
  </head>
  <body>
    <input type="text" id="txtField" />
    <input type="button" id="sendInput" value="Send" />
  </body>
</html>

<?php }?>