我刚刚进入了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-重新要求的,XMLHTTTPREQUEST标题,但它存在于Chrome中)

有帮助吗?

解决方案

并非所有浏览器都会发送相同的标头,因此您不能依靠它们在浏览器中保持一致。最简单的方法是不要依靠浏览器发送东西,而是手动发送某些内容:

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

});

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top