Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery Ajax beforeSend在Firefox中不起作用_Jquery_Django_Cross Browser_Http Headers - Fatal编程技术网

jQuery Ajax beforeSend在Firefox中不起作用

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,

我正在尝试使用jQuery执行一个ajax post请求,我需要添加自定义头(对于dJango CSRF)。我尝试过以下代码:

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调用。然后,逐个添加其他外部引用,直到你可以重新编写不是真正的答案,只是一些值得尝试的东西。