JQuery - $.ajax() - 使用 JSONP 跨源 - 获取“parsererror”仅适用于 IE 8(适用于 IE 7)

发布于 2024-12-16 11:48:51 字数 801 浏览 0 评论 0原文

我有以下代码来执行跨域请求并获取 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 中得到的 statusText 为“Success”,StatusCode 为 200。另外,我无法找到任何正确称为 xhr 的responseText。那么如何获得错误/完整函数中的响应呢?有什么想法吗?

I've the following code to do a crossdomain request and get JSONP data (JSON wrapped with by callback method). I've verified that I'm getting the response correctly with the callback method wrapping my JSON data. It is working PERFECTLY in IE7 (the callback cb is getting called) but not in 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);
}

I'm getting the statusText as 'Success' and StatusCode as 200 in xhr. Also I'm not able to find any propertly called responseText for xhr. So how can I get the response in the error/complete functions? Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彡翼 2024-12-23 11:48:51

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

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

});

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

Jquery automatic pass a callback something like callback=JQuery132123412415235 and the server must return a script calling this function with the data JQuery132123412415235(data_returned) and the rest is equal to the standard json request

You also use the success and error properties and use the promise and error(function (data) ) and complete(function (data)) just for a clear code I think you must use only one method. The code is like this:

$(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); ?????        
    }

});

Remember the server must return the data in the form callback_function(data) where data is the json object like if you returned in a standard json call.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文