$.ajaxPrefilter引发未捕获类型错误:无法将null转换为对象异常

$.ajaxPrefilter throws Uncaught TypeError: Cannot convert null to object Exception

本文关键字:null 转换 异常 对象 错误 ajaxPrefilter 类型      更新时间:2023-09-26

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

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

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

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

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

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