JQuery-$.ajax()-使用JSONP跨源-获取';解析器错误';仅在IE 8中(在IE 7中工作)

JQuery-$.ajax()-使用JSONP跨源-获取';解析器错误';仅在IE 8中(在IE 7中工作),jquery,internet-explorer-8,cross-domain,jsonp,Jquery,Internet Explorer 8,Cross Domain,Jsonp,我有以下代码来执行跨域请求并获取JSONP数据(用回调方法包装JSON)。我已经用包装JSON数据的回调方法验证了我正确地得到了响应。它在IE7中工作得很好(回调cb正在被调用),但在IE8中却不行 $(document).ready(function () { var abc = $.ajax({ type: "GET", url: "http://sd.domain.com/param1=a&param2=b&output=js

我有以下代码来执行跨域请求并获取JSONP数据(用回调方法包装JSON)。我已经用包装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);
}

在xhr中,我得到的状态文本为'Success',状态代码为200。我也找不到xhr的任何属性称为responseText的内容。那么,如何在error/complete函数中获得响应呢?有什么想法吗?

Jquery自动传递一个回调,比如
callback=JQuery132123412415235
,服务器必须返回一个调用这个函数的脚本,其中包含
JQuery132123412415235(返回的数据)
,其余的与标准json请求相同

您还可以使用success和error属性,并使用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); ?????        
    }

});
请记住,服务器必须以回调函数(data)的形式返回数据,其中数据是json对象,就像在标准json调用中返回一样