jQuery是否支持从X-JSON HTTP头读取JSON?

时间:2009-11-29 02:23:42

标签: javascript jquery json http

jQuery是否能够从服务器返回的X-JSON HTTP头中读取JSON数据?我一直在搜索jQuery文档,但我可以找到的所有示例都使用请求体中返回的JSON而不是标题。

2 个答案:

答案 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对象的引用:

  1. 挂钩到ajax请求的 complete 回调,而不是预期的success回调(jQuery与传递args的方式不一致)以什么顺序回调函数或全局ajax触发器):

    $.ajax({
      // ...
      complete: function(xhr) {
        var data = getHeaderJSON(xhr);
        // do with data as you wish
      }
    })
    
  2. 或者,您可以通过调用XMLHttpRequest / .ajax / .get等来保存对{4}}对象返回的引用。{{3 }}。这允许您在您选择的任何回调中使用它(例如.postsuccesscomplete

    error
  3. 所以直接回答你的标题:不,jQUery显然不支持这个OOTB。

答案 1 :(得分:1)

1.4 jQuery的成功:回调接收XMLHttpRequest - (data,textStatus,XMLHttpRequest)。因此,您不必再使用完整的:回调,如上所述。

希望我能回复上一个答案而不是添加新答案。