如何确定PHP页面向AJAX调用返回的内容


How to determine what a PHP page posts back to an AJAX call

我曾多次使用ajax将数据发送到php页面并返回一些内容,但我不确定如何确定具体返回了什么。我理解这里大多数领域的工作,但我也有一些问题。

我当前的代码如下:

$.ajax({
              url: "search.php", 
              type: "post",
              dataType: "json",
              data: {partNumber: q , newType:newType},
              success: function(data) {
                  console.log(data);
              }
          });

有一件事我不完全理解,那就是success:线路是如何工作的。当我说success: function(data)时,我的理解是,我说的是"一旦成功(某件事?我不确定是什么),返回到此ajax函数的信息将被称为data",然后在括号内,我选择console.log,即data

如果我的假设是错误的,请纠正我。

最终,我的php页面将做大量的工作,并返回一个包含数据的数组

$myArray = array("bob","dan","carl","mike");

如何选择将返回到ajax的?php页面运行良好,但现在我的console.log(data)行代码没有返回任何内容。

您不应该从ajax调用的php页面中return任何内容,您应该echo它(即将它写入响应)。

echo json_encode($myArray);

如果你所回应的不是JSon,那么去掉dataType: "json"success函数表示请求成功,即从服务器接收到状态为200的响应。还有一种error方法,当你没有得到成功的回复时,你可以使用它。

          success: function(data) {
              console.log(data);
          },
          error: function(data) {
              console.log("Error: "+data);
          }

1)你的"成功"基本上是说什么时候没有发生错误。

这是测试错误

$.ajax({
  url: 'search.php',
  success: function(){
    alert('success');
  },
  error: function(){
    alert('failure');
  }
});

2) 对于您的"数据",您在php端回显的内容将返回到中定义的变量中

function(results) {

例如,如果您想要返回一个数组,您可能想要返回"echo"json

您的数组应该包括一个密钥和一个值

$myArray = array("key" => "value");
echo json_encode($myArray);

在jquery端解析返回的json对象。

function(data) {
    var obj = jQuery.parseJSON(data);
    alert(obj.key);

3) 传递JSON对象

var JSONObject= {"partNumber":q, "newType":newType};
var jsonData = JSON.parse( JSONObject );  
var request = $.ajax({
  url: "search.php",
  type: "POST",
  data: jsonData,
  dataType: "json"
});