我有以下代码来执行跨域请求并获取JSONP数据(JSON由回调方法包装)。我已经验证我正在使用包装我的JSON数据的回调方法正确获得响应。它在IE7中完美地工作(回调cb被调用)但在IE8中没有。
$(document).ready(function () {
var abc = $.ajax({
type: "GET",
url: "http://sd.domain.com/param1=a¶m2=b&output=json&callback=cb",
dataType: "jsonp",
jsonp: false,
cache: false,
success: function (json) {
},
error: function (e) {
}
});
abc.error(function (data, xhr, dat1) {
});
abc.complete(function (xhr, status) {
var data = xhr.responseText;
});
});
function cb(dd) {
alert(dd.people[0].nameFirst);
}
我将statusText称为'Success',StatusCode为xhr中的200。此外,我无法为xhr找到任何称为responseText的属性。那么如何在错误/完整功能中获得响应?有什么想法吗?
答案 0 :(得分:0)
Jquery自动传递一个类似callback=JQuery132123412415235
的回调,服务器必须返回一个脚本,调用此函数并使用数据JQuery132123412415235(data_returned)
,其余的等于标准的json请求
您还可以使用成功和错误属性并使用承诺error(function (data) )
和complete(function (data))
只是为了获得清晰的代码我认为您必须只使用一种方法。代码是这样的:
$(document).ready(function () {
var abc = $.ajax({
type: "GET",
url: "http://sd.domain.com/param1=a¶m2=b&output=json",
dataType: "jsonp",
jsonp: false,
cache: false
});
abc.error(function (data, xhr, dat1) {
});
abc.complete(function (xhr, status) {
var data = xhr.responseText;
});
abc.done(data){
//alert(data.people[0].nameFirst); ?????
}
});
请记住,服务器必须以callback_function(data)形式返回数据,其中data是json对象,就像在标准json调用中返回一样。