2010-06-02 43 views
24

我尝试在Internet Explorer中使用jQuery和$.post进行AJAX调用,但是我得到的只是一个错误,指示“权限被拒绝”。这个问题有点奇怪,因为只有当我在任何其他页面上访问页面时才会出现这个问题。使用Internet Explorer和jQuery的“权限被拒绝”

例如,我在地址栏中输入URL并让IE加载页面。然后我点击一个按钮,脚本就会开始加载JSON数据。 (提供数据的脚本位于同一台服务器上,我使用相对URL访问它,因此使用不同的域名在这里不是问题,甚至尝试使用具有相同主机部分的绝对URL。)

但当我刷新页面,然后再试一次它就可以工作!当我从另一页面访问该页面时,也是如此。起初什么都没有,但是当我点击“刷新”时,一切都很好。

IE给我的错误消息“权限被拒绝”,而在其他浏览器中,我没有注意到这种行为。既然我已经尝试过很多事情,但仍然无法想象问题出在哪里,所以我想问问你,你认为问题可能是什么?

编辑: 一个小例子:

的test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> 
    <head> 
     <script type="text/javascript" src="/ietest/jquery.js"></script> 
     <script type="text/javascript" src="/ietest/test.js"></script> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    </head> 
    <body> 
     <a href="#">Test</a> 
    </body> 
</html> 

ajax.html

It works! 

test.js

$(document).ready(function(){ 
    $('a').click(function(){ 
     $.post('/ietest/ajax.html', function(data) { 
      alert(data); 
     }); 
    }); 
}); 

尝试在这里:http://t1318.greatnet.de/ietest/test.html

+0

你可以发布你的代码吗?这将有助于:) – 2010-06-02 17:52:31

+0

它在那里;)当我一直在寻找解决方案时,我已经多次阅读过这个问题。可悲的是,没有人知道发生了什么。 – rallex 2010-06-02 18:04:16

+0

你在使用哪个版本的IE? – 2010-06-02 18:35:10

回答

28

从jquerys论坛here的帖子中,您必须将内容类型meta作为头标记中的第一项。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <script type="text/javascript" src="/ietest/jquery.js"></script> 
     <script type="text/javascript" src="/ietest/test.js"></script> 
    </head> 
    <body> 
     <a href="#">Test</a> 
    </body> 
</html> 
0

如果本地(本地主机),那么你必须有完整的路径安全原因。

+0

在这里用'http:// 192.168.0.5/ietest/ajax.html'试了一下。其他浏览器这样做,IE仍然是一样的。 – rallex 2010-06-02 18:17:04