IE7中的jQuery AJAX问题(可能还有其他版本)

任何人都可以告诉我为什么以下代码不能在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的此页面的小提琴post:

 # 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中此页面的小提琴post:

 # 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 

我遇到了同样的问题。

我做了一个解决问题的工作。 我编写代码来进行ajax调用而不使用jQuery(创建XMLHttpObject,onreadystatechange等)。 然后我使用jQuery来解析XML。

出于某种原因,jQuery的ajax与IE7不兼容。

在IE7中你没有真正得到错误,但是如果你调试它,那么你会看到服务器永远不会被命中,或者代码永远不会到达成功块。

如果人们偶然发现这个页面是因为他们遇到了同样的错误 – 我发现IE7的另一个原因/解决方案失败了这个“PERMISSION DENIED”错误并成功刷新。

如果你在标签中使用它,请确保:

  

请注意,它在“;”之后没有任何大写字母或空格。 我们的网站有这个版本:

  

并且在进行AJAX调用时会导致相同的行为。

希望这有助于其他人,因为我们花了大约6个小时来搞清楚这一点。

最新编辑

我在这里找到了一些关于这个的讨论:http: //zacster.blogspot.com/2008/10/jquery-ie7-load-url-problem.html和其他地方。 似乎问题与IE7缓存有关。 如果您使URL唯一可能解决问题(例如,在请求字符串的末尾添加timenow = 09472345。)

初步回应

你确定这个名字是.asp吗? 我希望看到.aspx或.net处理的其他扩展如果这是你需要的那么你可能必须在IIs中启用.asp

然后我又读了一遍这个问题

我看到它在其他浏览器中有效,所以它不能是我原来的评论…下载fiddler,看看请求与IE和其他浏览器有何不同。

http://www.fiddler2.com/fiddler2/

我在IE7中的jQuery中也遇到了AJAX调用的问题。 我发现了我的问题,不确定它是否与你的相关。

我没有把协议放在URL中,并在IE 7中有额外的斜杠这样:

//www.mywebsite.com/products//json.php

除了shIEt以外,其他地方都可以使用

一旦我添加了协议并带走了额外的斜线,它一切正常。

您的页面中可能存在不适当的内容,我遇到此问题的原因是我在同一页面上使用JqueryTool API时使用了document.write("

在jquery 1.9.1中有一行,之后没有使用但会引发exception:第2582行,jquery-1.9.1.js中的第4列

这只发生在IE7而不是IE8或更高版本,并阻止它加载其余的jquery东西。 在IE9中使用IE7兼容模式我发现抛出exception的代码行然后在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; } };