尝试通过 jQuery.ajax() 访问返回的 JSONP 数据



我返回了格式正确的控制台中显示的 JSONP 数据。

group({
  "blah": "blah",
  "blahblah": "blahblah",
  "blahblahblah": "blahblahblah"
}); 

这是我的 ajax 调用。

$.ajax({
  type: 'GET',
  url: 'test.php',
  dataType: 'jsonp', 
  cache: false,
  jsonpCallback: 'group',
  statusCode: {
    404: function() {
      alert( "page not found" );
    }
  },
  success: function(group){
    console.log(group);
    $('#theTest').append(group.name);
  },
  error: function(response1, response2, response3){
    console.log("Fail!");
    console.log(response1);
    console.log(response2);
    console.log(response3);
  }
});

JSON 用"group"包装。但是,当我尝试访问该数据时,我无法这样做。

  • group.name 当我将其放置在站点上时,控制台中具有值的内容不会显示。
  • 组[0] 返回 g
  • 组[1] 返回 R
  • 组[2] 返回 o

我很困惑为什么它都以这种方式返回。有人可以指出我正确的方向吗?

你的 ajax 请求不正确,它应该是这样的

$.ajax({
  type: 'GET',
  url: 'test.php',
  dataType: 'jsonp', 
  cache: false,
  jsonpCallback: 'group',
  statusCode: {
    404: function() {
      alert( "page not found" );
    }
  },
  success: function(group){
    console.log(group);
    $('#theTest').append(group.name);
  },
});

dataTypecachecallback不能作为数据字段传递,数据类型应该jsonp

错误出在服务器端响应中。 JSONP 的工作方式是,指定一个已知的回调参数,该参数将传递给 GET 请求。 在服务器端,需要提取该参数以获取 JSON 填充的封装方法调用。

在 jsonpCallback: 'group' 示例中,您的服务器端需要:

    $methodName = $_GET['group']
    $response = $methodName . '(' . <YOUR JSON RESPONSE> . ');'
    echo $response

最新更新