$ .ajaxPrefilter抛出Uncaught TypeError:无法将null转换为对象Exception

时间:2013-02-25 23:08:25

标签: javascript jquery ajax javascript-objects

我想用$.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

上的options.headers["myOwnHeader2"] = "test";

1 个答案:

答案 0 :(得分:1)

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

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

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