2013-02-25 22 views
2

我想改变AJAX头与$.ajaxPrefilter和尝试以下操作:

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

在网络控制台(浏览器)的myOwnHeader2设置和myOwnHeader1不。但它抛出以下异常:Uncaught TypeError: Cannot convert null to objectoptions.headers["myOwnHeader2"] = "test";

回答

1

options对象不一定包含headers属性 - 只有在全球$.ajaxSettings或电流(原件)选项中给出。所以,你的选择是使用$.ajaxSetup({headers: {}});,在if ("headers" in options)

  • 创建头在前置动态对象,如果不存在,它可能与myOwnHeader2已经设置
  • 包裹你的删除/扩展操作

    options.headers = options.headers || {}; 
    delete options.headers["myOwnHeader1"]; 
    options.headers["myOwnHeader2"] = "test"; 
    
  • 相关问题