Ajax 为什么';这不是IE的工作吗?

Ajax 为什么';这不是IE的工作吗?,ajax,internet-explorer,hashtag,Ajax,Internet Explorer,Hashtag,以下是一个例子: 它适用于除internet explorer以外的所有浏览器。代码如下: <!doctype html> <html> <head> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script> <script> $(do

以下是一个例子:

它适用于除internet explorer以外的所有浏览器。代码如下:

<!doctype html>
<html>
    <head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
        <script>
            $(document).ready(function(){
                    $('div').load('contents.html');
            });
        </script>
    </head>
    <body>
        <div>This message will change if the call is made correctly.</div>
    </body>
</html>

$(文档).ready(函数(){
$('div').load('contents.html');
});
如果呼叫正确,此消息将更改。
contents.html的内容是 如果您仍然使用test.html,那么这个AJAX调用就起作用了


显然,我计划使用标签导航,但奇怪的是如果你删除了/#/url中的内容将在IE中工作。但如果您将其留在那里,即使它与代码无关,它仍然无法工作。看看标题,我得到了406个错误。帮助:(

根据我上面的评论:问题似乎是IE9在创建“Referer”时保留了URL的“#!/contents”部分标头。jQuery AJAX围绕浏览器的XMLHTTPRequest对象包装的jqXHR对象公开了一个setRequestHeader方法,该方法可以让您更改Referer标头,从而不会导致406错误。如果您不关心精确的Referer标头,可以尝试向脚本中添加以下代码:

$('div').ajaxSend(function(evt,jqXHR) {
  jqXHR.setRequestHeader(jqXHR.getResponseHeader("Referer").replace(/#/g,''));
});

这将为针对div执行的所有AJAX操作创建一个ajaxSend回调,该回调将从Referer头中去除散列标记…我还没有时间测试这个,但理论上它应该可以工作。

不存在?也许你在firefox中使用了html?它从不尝试获取该页面。它尝试获取,这是一个406错误,不是吗对我来说,这很好。在IE 9上。据我所知,问题是IE9将URL中的“#!/contents”部分保留在AJAX请求的“Referer”头中,Firefox和其他浏览器会将其删除。不幸的是,我不知道如何修复它。