我返回了格式正确的控制台中显示的 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);
},
});
dataType
,cache
和callback
不能作为数据字段传递,数据类型应该jsonp
错误出在服务器端响应中。 JSONP 的工作方式是,指定一个已知的回调参数,该参数将传递给 GET 请求。 在服务器端,需要提取该参数以获取 JSON 填充的封装方法调用。
在 jsonpCallback: 'group' 示例中,您的服务器端需要:
$methodName = $_GET['group']
$response = $methodName . '(' . <YOUR JSON RESPONSE> . ');'
echo $response