fri*_*edo 1 javascript jquery json http
jQuery是否能够从服务器返回的X-JSON HTTP头中读取JSON数据?我一直在搜索jQuery文档,但我可以找到的所有示例都使用请求体中返回的JSON而不是标头.
是的,你需要调用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
}
}
Run Code Online (Sandbox Code Playgroud)
请注意try
/ catch
对于某些版本的Firefox,如果不存在标头,则会引发错误.我不记得哪个版本受到了影响.
您有几种方法可以XMLHttpRequest
在jQuery中获取对象的引用:
挂钩到complete
ajax请求的回调,而不是预期的success
回调(jQuery与args以什么顺序传递给回调函数或全局ajax触发器的方式有点不一致):
$.ajax({
// ...
complete: function(xhr) {
var data = getHeaderJSON(xhr);
// do with data as you wish
}
})
Run Code Online (Sandbox Code Playgroud)或者,您可以通过ClosureXMLHttpRequest
从对.ajax
/ .get
/ .post
etc的调用中保存对返回给您的对象的引用.这允许您在您选择的任何回调中使用它(即或者,或者就此而言):success
complete
error
var xhr = $.ajax({
// ...
success: function() {
var data = getHeaderJSON(xhr); // access xhr var via closure
// do with data as you wish
}
});
Run Code Online (Sandbox Code Playgroud)所以直接回答你的标题:不,jQUery显然不支持这个OOTB.
归档时间: |
|
查看次数: |
3625 次 |
最近记录: |