jquery.get在Firefox上不发出xhr请求

2 投票
1 回答
592 浏览
提问于 2025-04-16 07:10

我刚刚进入jquery的世界,对javascript也还很陌生。我有一段小的javascript代码,如下所示:

<script type="text/javascript">
 $(function(){
    $('a').click(function(event){
        event.preventDefault();
        $.get('/_add_navigation_',function(response){
        $('#themaincontents').html(response);
        })
   })
</script>

HTML代码看起来是这样的:

<a href="?toaddnavigation">CLICK Me</a>
<div id="themaincontents"></div>

在服务器端,我通过类似下面的方式检查xhr头:

 if request.is_xhr: send response else:redirect somewhere

现在,这段代码在Chrome和Opera上运行得很好,但在Firefox上表现得有点奇怪。服务器没有返回响应,而是进行了重定向。这意味着它表示没有xhr头。为什么在另外两个浏览器上可以正常工作,而在Firefox上却不行呢?
(我使用的是Firefox 3.6.12)
更新 - 我刚查看了一下Firefox的请求头,发现没有X-Requested-With:XMLHttpRequest这个头,但在Chrome中是有的。

1 个回答

0

并不是所有的浏览器发送的请求头都是一样的,所以你不能指望它们在不同的浏览器中表现一致。最简单的方法就是不要依赖浏览器自动发送什么,而是自己手动发送一些东西:

$.get('url', {
    xhr: 'yes' // add this extra parameter here
}, function(){

});

然后在服务器上检查这个GET变量,而不是依赖可能会被浏览器发送的请求头。

撰写回答