【问题标题】:XMLHttpRequest error only in IE仅在 IE 中出现 XMLHttpRequest 错误
【发布时间】:2012-12-06 16:45:04
【问题描述】:

我们使用 XMLHttpRequest 模拟对象来测试我们的 ExtJs 4.1 应用程序与 Jasmine。现在,一切都在 Chrome 和 Firefox 中完美运行,但 IE 版本 7 到 9 一如既往地出现问题。

onreadystatechange函数有错误,

如果readyState1 那么SCRIPT575(由于错误c00c023f 无法继续)

如果readyState2 那么SCRIPT10(所需数据尚不可用)

看到这个Jsfiddle(搜索“错误”跳转到行)

另外还有一个错误TypeError: Object expected


我读过的内容

我阅读了一些帖子,例如 thisthat,但没有一个建议解决了这个问题。


注意

在 Chrome 和 Firefox 中,所有请求仅返回 readyState 4,但在 IE readyState 中,值从 1 到 4 重复(?)。

Chrome & FF
readyState 4 => OK
readyState 4 => OK
readyState 4 => OK
readyState 4 => OK
readyState 4 => OK
...

IE:
readyState 1 => error
readyState 2 => error
readyState 3 => OK
readyState 4 => OK
readyState 1 => error
...

你能指导我如何解决这个问题吗?我不知道。

【问题讨论】:

    标签: javascript xmlhttprequest


    【解决方案1】:

    在读取 responseXML/responseText 属性之前检查 readyState 值。如果 readyState 值为 4,则可以安全访问 responseXML/responseText

    (XMLHttpRequest的原始实现和后来的规范要求实现在对象完成I/O操作之前对数据的访问抛出异常)

    【讨论】:

    • 感谢您的回答。当我检查if( oXhr.readyState > 3 ) 时,这些错误消失了。但是,为什么 IE 中有 1-4 个就绪状态。现在,ExtJs 中出现了另一个错误object expected。我会检查并返回。
    • 您可能正在运行同步请求,这些可能不会触发除 IE9- 浏览器之外的所有 readyState 更改。
    • 是的,我使用Ext.syncRequire,但也尝试过Ext.require。没有区别。
    【解决方案2】:

    有一个名为response 的属性应该是responseText

    另外,我正在检查readyStateif( typeof oXhr.readyState !== 'undefined' ) {}

    现在我的代码可以在 IE8、IE9(标准)中运行。

    但是,IE8、IE9 (Quirks) 和 IE 7 (Quirks & Standard) 失败并出现错误:

    SCRIPT16389: Unknown error

    我会尝试解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 2011-08-13
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 2012-07-16
      相关资源
      最近更新 更多