Да, вам нужно вызвать метод getResponseHeader
объекта XMLHttpRequest
и выполнить десериализацию JSON вручную:
function getHeaderJSON(xhr) {
var json;
try { json = xhr.getResponseHeader('X-Json') }
catch(e) {}
if (json) {
var data = eval('(' + json + ')'); // or JSON.parse or whatever you like
return data
}
}
Обратите внимание, что try
/ catch
для некоторых версий Firefox, где, если заголовок отсутствует, выдается ошибка. Я не могу вспомнить, какие версии были затронуты.
У вас есть несколько способов получить ссылку на объект XMLHttpRequest
в jQuery:
подключается к обратному вызову complete
запроса ajax, в отличие от ожидаемого обратного вызова success
(jQuery является своего рода непоследовательным по отношению к тому, какие аргументы передаются в каком порядке, чему функция обратного вызова или глобальный триггер ajax):
$.ajax({
// ...
complete: function(xhr) {
var data = getHeaderJSON(xhr);
// do with data as you wish
}
})
В качестве альтернативы вы можете сохранить ссылку на объект XMLHttpRequest
, возвращенный вам из вызовов .ajax
/ .get
/ .post
и т. Д., Через Closure . Это позволяет вам использовать его внутри любого обратного вызова, который вы выберете (например, success
или complete
, или error
):
var xhr = $.ajax({
// ...
success: function() {
var data = getHeaderJSON(xhr); // access xhr var via closure
// do with data as you wish
}
});
Итак, чтобы ответить на ваш заголовок напрямую: нет, jQUery явно не поддерживает этот OOTB.