jQuery .get不要执行XHR请求!
-
11-10-2019 - |
题
我刚刚进入了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(){
});
然后检查服务器上的该变量,而不是浏览器可能不会发送或可能不会发送的标题。
不隶属于 StackOverflow