任何人都可以告诉我为什么以下代码在IE7中不起作用但它在Chrome / Firefox中运行良好吗?
$(document).ready(function(){
$.ajax({
type: "POST",
dataType: "text",
cache: false,
url: "/ajax/ajax.asp",
data: "cmd=check_forfeits",
success: function(msg) {
return false;
}
});
});
IE抛出的javascript错误是'Permission Denied'
如果我从有问题的页面的JS文件中删除那段代码,页面工作正常,没有错误,所以错误在于我相信的那段代码。
::: UPDATE :::
其他有点奇怪的是当我刷新页面时(在IE7中)我没有得到javascript错误,这段代码似乎正常工作。所以就像第一次页面加载这段代码片段错误一样,但之后运行得很好。
::: UPDATE :::
以下是来自IE7的此页面的小提琴帖子:
# Result Protocol Host URL
1 200 HTTP 192.168.47.13:8000 /
2 304 HTTP 192.168.47.13:8000 /js/jquery-1.4.1.js
3 200 HTTP 192.168.47.13:8000 /js/index.js
4 304 HTTP 192.168.47.13:8000 /js/jquery-1.4.1.js
5 200 HTTP 192.168.47.13:8000 /js/index.js
6 304 HTTP 192.168.47.13:8000 /css/main.css
7 304 HTTP 192.168.47.13:8000 /css/grid.css
8 304 HTTP 192.168.47.13:8000 /images/banner.jpg
以下是Firefox中此页面的小提琴帖子:
# Result Protocol Host URL
1 200 HTTP 192.168.47.13:8000 /
2 304 HTTP 192.168.47.13:8000 /js/jquery-1.4.1.js
3 304 HTTP 192.168.47.13:8000 /js/index.js
4 304 HTTP 192.168.47.13:8000 /css/grid.css
5 304 HTTP 192.168.47.13:8000 /css/main.css
6 304 HTTP 192.168.47.13:8000 /images/banner.jpg
7 200 HTTP 192.168.47.13:8000 /ajax/ajax.asp
答案 0 :(得分:8)
如果人们碰巧找到了这个页面,因为他们遇到了同样的错误 - 我发现IE7的另一个原因/解决方案失败了这个“PERMISSION DENIED”错误并且成功刷新。
如果您在<head>
标记中使用此内容,请确保
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
请注意,不在“;”后面有任何大写字母或空格。我们的网站有这个版本:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
并且在进行AJAX调用时会导致相同的行为。
希望这有助于其他人,因为我们只花了大约6个小时来解决这个问题。
答案 1 :(得分:2)
我遇到了同样的问题。
我做了一个解决问题的工作。我编写代码来进行ajax调用而不使用jQuery(创建XMLHttpObject,onreadystatechange等)。然后我使用jQuery来解析XML。
出于某种原因,jQuery的ajax与IE7不兼容。
在IE7中你并没有真正得到错误,但如果你调试它,那么你会看到服务器永远不会被命中,或者代码永远不会到达成功块。
答案 2 :(得分:0)
最新编辑
我在这里找到了一些关于此的讨论:http://zacster.blogspot.com/2008/10/jquery-ie7-load-url-problem.html和其他地方。看来这个问题与IE7缓存有关。如果您使URL唯一可能解决问题(例如,在请求字符串的末尾添加timenow = 09472345。)
初步回复
你确定这个名字是.asp吗?我希望看到.aspx或.net处理的其他扩展如果这是你需要的那么你可能必须在IIs中启用.asp
然后我再次阅读了这个问题
我看到它在其他浏览器中有效,所以它不能是我原来的评论...下载fiddler,看看请求与IE和其他浏览器有何不同。
答案 3 :(得分:0)
我在IE7中的jQuery中也遇到了AJAX调用问题。我发现了我的问题,不确定它是否与你的相关。
我没有将协议放在URL中,并且在IE 7中有额外的斜杠,这样:
// www.mywebsite.com/products//json.php
除了shIEt 以外的其他地方都可以使用
一旦我添加了协议并带走了额外的斜线,它一切正常。
答案 4 :(得分:0)
在您的页面中可能存在不适当的内容,我遇到此问题的原因是我在同一页面上使用JqueryTool API时使用document.write("<style></style")
。
答案 5 :(得分:0)
在jquery 1.9.1中有一行,之后没有使用但会引发异常: 第2582行,jquery-1.9.1.js第4列
这只发生在IE7而不是IE8或更高版本,并阻止它加载其余的jquery东西。在IE9中使用IE7兼容模式我发现抛出异常的代码行然后在jquery1.9.1中将其注释掉如下:
// IE6/7 do not support getting/setting some attributes with get/setAttribute
if ( !getSetAttribute ) {
// Use this for any attribute in IE6/7
// This fixes almost every IE6/7 issue
nodeHook = jQuery.valHooks.button = {
get: function( elem, name ) {
var ret = elem.getAttributeNode( name );
return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ?
ret.value :
undefined;
},
set: function( elem, value, name ) {
// Set the existing or create a new attribute node
var ret = elem.getAttributeNode( name );
if ( !ret ) {
elem.setAttributeNode(
(ret = elem.ownerDocument.createAttribute( name ))
);
}
//LB - 19/04/2013 - removed for IE7 compatibility.
//ret.value = value += "";
// Break association with cloned elements by also using setAttribute (#9646)
return name === "value" || value === elem.getAttribute( name ) ?
value :
undefined;
}
};