Я пишу диагностический сайт для тестирования наших методов сервера.
Одна из вещей, которые я хотел бы увидеть, это код состояния HTTP и возвращаемая фактическая полезная нагрузка.
Когда я делаю запрос CORS с использованием $ .ajax, я вижу jqXhr.responseText, чтобы увидеть полезную нагрузку, но когда я использую $ .getJSON для запроса JSONP, jqXhr.responseText не определен.
Есть ли способ увидеть полезную нагрузку HTTP при использовании $ .getJSON с jsonp?
Получите jqXhr.responseText по запросу jQuery 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);
};
Да, в этом jsfiddle responseText заполняется, но только при использовании jsfiddle эхо конечной точки. если я изменю его, чтобы использовать мой, он не определен. Я даже могу использовать свой старый метод для получения responseText (где .success закрывается вокруг jqXhr), используя/echo/jsonp/... Единственное отличие, которое я вижу, это то, что при переходе на мой url я являюсь междоменным. Может ли это быть частью политики одного и того же происхождения в Chrome? – csauve
пример: http://jsfiddle.net/collinsauve/5GQ6s/ заменить myurl во второй последней строке с помощью междоменного вызова ... responseText будет неопределенным – csauve
видя это поведение с той же скрипкой во всех браузерах Chrome, FF и IE – csauve