JQuery - $.ajax() - Кросс-начало с использованием JSONP - Получение "parsererror" только в IE 8 (работает в IE 7)

У меня есть следующий код для выполнения запроса crossdomain и получения данных JSONP (JSON, завернутый методом обратного вызова). Я проверил, что правильно получаю ответ с помощью метода обратного вызова, который переносит мои данные JSON. Он работает ОТЛИЧНО в IE7 (вызов callback 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 как 200 в xhr. Кроме того, я не могу найти какой-либо правильно названный responseText для xhr. Итак, как я могу получить ответ в функции error/complete? Любые идеи?

Ответ 1

Jquery автоматически передает обратный вызов примерно как callback=JQuery132123412415235, и сервер должен вернуть script вызов этой функции с данными 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&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), где data является json-объектом, например, если вы вернулись в стандартный json-вызов.