jQuery Ajax beforeSend在Firefox中不起作用
我正在尝试使用jQuery执行一个ajax post请求,我需要添加自定义头(对于dJango CSRF)。我尝试过以下代码:jQuery Ajax beforeSend在Firefox中不起作用,jquery,django,cross-browser,http-headers,Jquery,Django,Cross Browser,Http Headers,我正在尝试使用jQuery执行一个ajax post请求,我需要添加自定义头(对于dJango CSRF)。我尝试过以下代码: var load = function() { $.ajax({ type: 'POST', url: '/ajax/get_page/', data: $.toJSON({ section: section, subsection: subsection,
var load = function() {
$.ajax({
type: 'POST',
url: '/ajax/get_page/',
data: $.toJSON({
section: section,
subsection: subsection,
page: page.page
}),
beforeSend: function(xhr, settings) {
xhr.setRequestHeader("exmpl", "abcdef");
},
success: function (data){
container.html(data);
page.init(container);
show();
}
});
}
它在Chrome中运行良好,但在Firefox(Fedora、Firefox 8、jQuery 1.7)中不起作用。似乎它甚至不执行beforeSend函数
有什么想法吗?我只是猜测一下,但是$.ajax.beforeSend在Firefox中应该可以正常工作,但是Firefox中的setRequestHeader存在一个已知问题,通常需要打开XMLHttpRequest才能运行setRequestHeader,但这是在本机javascript中,我不确定jQuery是否以某种方式在内部解决了这个问题 比如:
xhr.open(method,url,async,username,password);
xhr.setrequestheader("exmpl", "abcdef");
检查firebug是否存在“错误:未捕获异常:[异常…”组件返回的故障代码:0x804b000f[nsixmlhttprequest.setrequestheader]”以查看是否记录了该错误,或者是否记录了任何其他错误,请在此处发布
编辑:另一方面,在阅读$.ajax的文档时,它会说:
目前,由于Firefox where.getAllResponseHeaders()中的一个bug
返回空字符串,尽管.getResponseHeader('Content-Type'))
返回一个非空字符串,自动解码JSON CORS响应
在Firefox中不支持jQuery
不知道这是否与您的问题有关,因为它实际上不是同一个函数,但听起来有点相关,Ajax上有一个解决方法。是beforeSend失败,还是xhr.setRequestHeader(“exmpl”,“abcdef”);如果您只是发出警报('something'),该怎么办;在那里?我尝试在befireSend中发出警报,但失败了。在Firefox中,beforeSend根本没有执行=(这对你一点帮助都没有,但我只是在Firefox 8中试用过,效果很好。看起来,根据你对这篇文章的标记方式,你加载了几个不同的JS库。试着从头开始一个页面,只使用jQuery和你自己的脚本,并进行基本的ajax调用。然后,逐个添加其他外部引用,直到你可以重新编写不是真正的答案,只是一些值得尝试的东西。