jQuery是否能够从服务器返回的X-JSON HTTP头中读取JSON数据?我一直在搜索jQuery文档,但我可以找到的所有示例都使用请求体中返回的JSON而不是标题。
答案 0 :(得分:5)
是的,您需要调用XMLHttpRequest
对象的getResponseHeader
method,并手动执行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,如果不存在标头,则会引发错误。我不记得哪个版本受到了影响。
您有几种方法可以在jQuery中获取对XMLHttpRequest
对象的引用:
挂钩到ajax请求的 complete
回调,而不是预期的success
回调(jQuery与传递args的方式不一致)以什么顺序回调函数或全局ajax触发器):
$.ajax({
// ...
complete: function(xhr) {
var data = getHeaderJSON(xhr);
// do with data as you wish
}
})
或者,您可以通过调用XMLHttpRequest
/ .ajax
/ .get
等来保存对{4}}对象返回的引用。{{3 }}。这允许您在您选择的任何回调中使用它(例如.post
或success
或complete
:
error
所以直接回答你的标题:不,jQUery显然不支持这个OOTB。
答案 1 :(得分:1)
1.4 jQuery的成功:回调接收XMLHttpRequest - (data,textStatus,XMLHttpRequest)。因此,您不必再使用完整的:回调,如上所述。
希望我能回复上一个答案而不是添加新答案。