JQuery – $ .ajax() – 使用JSONP的跨源 – 仅在IE 8中获取’parsererror’(在IE 7中工作)

我有以下代码来执行跨域请求并获取JSONP数据(JSON由回调方法包装)。 我已经validation我正在使用包装我的JSON数据的回调方法正确获得响应。 它在IE7中完美地工作(回调cb被调用)但在IE8中没有。

$(document).ready(function () { var abc = $.ajax({ type: "GET", url: "http://sd.domain.com/param1=a&param2=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的属性。 那么如何在错误/完整function中获得响应? 有任何想法吗?

Jquery自动传递一个类似callback=JQuery132123412415235 ,服务器必须返回一个脚本,调用此函数并使用数据JQuery132123412415235(data_returned) ,其余的等于标准的json请求

您还使用成功和错误属性并使用promise和error(function (data) )complete(function (data))只是为了清晰的代码我认为您必须只使用一种方法。 代码是这样的:

 $(document).ready(function () { var abc = $.ajax({ type: "GET", url: "http://sd.domain.com/param1=a&param2=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)forms返回数据,其中数据是json对象,就像在标准json调用中返回一样。