Получите jqXhr.responseText по запросу jQuery getJSON, используя JSONP - PullRequest
0 голосов
/ 30 марта 2012

Я пишу диагностический сайт для тестирования наших серверных методов.
Одна из вещей, которую я хотел бы увидеть, - это код состояния HTTP и возвращаемая фактическая полезная нагрузка.

Когда я делаю CORSзапрос с использованием $ .ajax, я могу видеть jqXhr.responseText, чтобы увидеть полезную нагрузку, но когда я использую $ .getJSON для выполнения запроса JSONP, jqXhr.responseText не определен.полезная нагрузка HTTP при использовании $ .getJSON с jsonp?

function callJavascript(url, callback) {
    var closedData;
    var jqXhr = $.getJSON(url, function (data) {
        closedData = data;
    })
    .success(function() {
        $('#statusCode').text(jqXhr.status); //200
        $('#statusText').text(jqXhr.statusText); //success
        //this is undefined
        $('#responseText').text(jqXhr.responseText); 
        callback(closedData);
    });
};


function someCall()
{
    var callback = function(data) {
        //snip... will pop UI with json object returned
    };
    callJavascript('http://myurl?callback=?', callback);
};

1 Ответ

5 голосов
/ 30 марта 2012

Я предлагаю использовать .done вместо .success из-за устаревания.

В обратном вызове .success (или .done) есть три параметра: проанализированный текст ответа, текст состояния и объект xhr.

function callJavascript(url, callback) {
    var closedData;
    $.getJSON(url, function (data) {
        closedData = data;
    })
    .done(function(parsedResponse,statusText,jqXhr) {
        $('#statusCode').text(jqXhr.status); //200
        $('#statusText').text(jqXhr.statusText); //success
        //this should not be undefined
        $('#responseText').text(jqXhr.responseText); 
        console.log(parsedResponse);
        callback(closedData);
    });
};

Вот скрипка, где вы можете увидеть полные console.log аргументов.

http://jsfiddle.net/SDUEj/

...