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

标签 javascript jquery json http

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

最佳答案

是的,您需要调用 getResponseHeader methodXMLHttpRequest对象,并手动进行 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,如果 header 不存在,则会抛出错误。我不记得哪些版本受到了影响。

您有几种方法可以获取对 XMLHttpRequest 的引用jQuery 中的对象:

  1. Hook 到 complete ajax 请求的回调,而不是预期的 success回调(对于以何种顺序将参数传递给回调函数或全局 ajax 触发器的参数,jQuery 有点不一致):

    $.ajax({
      // ...
      complete: function(xhr) {
        var data = getHeaderJSON(xhr);
        // do with data as you wish
      }
    })
    
  2. 或者,您可以保存对 XMLHttpRequest 的引用从调用 .ajax 返回给您的对象/.get/.post等,通过 Closure .这允许您在您选择的任何回调中使用它(即 successcomplete ,或 error ):

    var xhr = $.ajax({
      // ...
      success: function() {
        var data = getHeaderJSON(xhr); // access xhr var via closure
        // do with data as you wish
      }
    });
    

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

关于javascript - jQuery 是否支持从 X-JSON HTTP header 读取 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1814441/

相关文章:

javascript - 加载时全屏

javascript - 当删除类时。类(class)长度没有变化?

javascript - 如何让 JSON 数据显示在 HTML div 中?

javascript - 如何在chart js分组条形图上垂直显示渐变?

javascript - 在 JavaScript 中,如何按 asc/desc 对数组数组进行排序

jquery - 使用 jQuery 和 p+t 矩阵在表达式引擎中动态加载图像

javascript - Jquery Slider 在 Chrome 中显示正常但在 Firefox 中不显示

javascript - jQuery "on"模糊事件

jquery - JSON 字符串中的冒号

json - 如何在 PostgreSQL 9.3 中查询 JSON 数组?