【问题标题】:$.ajaxPrefilter throws Uncaught TypeError: Cannot convert null to object Exception$.ajaxPrefilter 抛出 Uncaught TypeError: Cannot convert null to object 异常
【发布时间】:2013-02-11 06:21:17
【问题描述】:

我想用 $.ajaxPrefilter 更改 AJAX 标头并尝试以下操作:

$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
    delete options.headers["myOwnHeader1"];
    options.headers["myOwnHeader2"] = "test";
});

在网络控制台 (Chrome) 中,myOwnHeader2 已设置,myOwnHeader1 未设置。但它会引发以下异常:Uncaught TypeError: Cannot convert null to object on options.headers["myOwnHeader2"] = "test";

【问题讨论】:

    标签: javascript jquery ajax javascript-objects


    【解决方案1】:

    options 对象不一定包含 headers 属性 - 仅当在全局 $.ajaxSettings 或当前(原始)选项中给出时。所以你的选择是

    • 使用$.ajaxSetup({headers: {}});,可能已经设置了myOwnHeader2
    • 将删除/扩展操作包装在 if ("headers" in options) 块中
    • 如果不存在,则在预过滤器中动态创建标头对象:

    options.headers = options.headers || {};
    delete options.headers["myOwnHeader1"];
    options.headers["myOwnHeader2"] = "test";
    

    【讨论】:

      猜你喜欢
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      相关资源
      最近更新 更多