jquery .get没有做xhr请求!

时间:2010-11-16 20:18:57

标签: python jquery xmlhttprequest flask

我刚刚进入了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 3.6.12) 更新 - 刚刚查看了firefox的请求标头,我发现没有X-Requested-With:XMLHttpRequest标头,但它存在于chrome中)

1 个答案:

答案 0 :(得分:0)

并非所有浏览器都发送相同的标头,您不能依赖它们在浏览器之间保持一致。最简单的方法是不依赖浏览器发送内容,而是自己手动发送内容:

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

});

然后在服务器上检查该GET变量,而不是浏览器可能发送或不发送的标头。