【问题标题】:AJAX inconsistency in IE 8?IE 8 中的 AJAX 不一致?
【发布时间】:2010-09-08 03:30:20
【问题描述】:

这是我的代码:(确切地说,是其中不可靠的部分)

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    var requisicao=new XMLHttpRequest();
} else {
    var requisicao=new ActiveXObject("Microsoft.XMLHTTP");
}

好的。有时这可以正常工作,但有时 IE 中的 Javascript 调试器会告诉我:

对象不支持此属性或方法 model.js 第 59 行字符 3

相当于....

var requisicao=new XMLHttpRequest();

让我感到困扰的是,有时 IE 8 会接受这一点并继续运行,但有时它会阻塞且无法正常工作?

欢迎任何帮助

提前致谢

【问题讨论】:

  • IE报错行基本都是随机数。你最好使用脚本调试器并让它跳转到真正发生错误的地方,而不是试图找出这个神秘的“第 59 行”在哪里。
  • 这就是我实际所做的。我正在使用脚本调试器,它是 IE 8 上的开发人员工具的一部分。它准确地告诉我行号,甚至跳转到实际代码并突出显示问题。所以我认为这是对的......另外,因为我在使用 jQuery 时遇到了这个问题,但现在我改回常规的 javascript 来尝试解决问题。

标签: javascript ajax internet-explorer post ie-developer-tools


【解决方案1】:

编辑:显然,在这种情况下,Internet Explorer 的行号是正确的。这似乎是 Internet Explorer 8 的常见问题。这里有一个潜在的解决方案:Ajax app works in some browers, not others

以下是代码的相关部分:

try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) { try { xmlhttp = new XMLHttpRequest(); }
catch (e) { xmlhttp = false; }}}

不幸的是,Internet Explorer 的行号并不总是准确的,因为它们是基于它自己的代码的内部序列化。错误消息可能来自不同的行(希望在第 59 行附近)。

我会检查您在对象上调用方法的地方,无论出于何种原因,该方法都可能被设置为不同的值。

【讨论】:

  • 是吗?起初,我使用的是 jQuery。然后,调试器告诉我问题出在 jquery.js 文件中,在这个区域,大约是:xhr:A.XMLHttpRequest...相同的错误和相同的命令?这不会是巧合吧?
  • @Felipe:我用 XMLHttpRequest 搜索了那个错误,发现了这个问题:stackoverflow.com/questions/1482177/problem-with-ie8-using-ajax。您可以从那里尝试解决方案(它有更多代码,但您可以取出您需要的部分)。
  • 谢谢马修。我真的不知道为什么会这样,但是如果您尝试创建 ActiveXObject("Msxml2.XMLHTTP");在创建常规 XMLHttpRequest 之前的对象。更多信息在这里daniweb.com/forums/thread299941.html ...再次感谢 Mathhew Crumley
猜你喜欢
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
  • 2013-07-07
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
相关资源
最近更新 更多