我们使用XMLHttpRequest模拟对象来使用Jasmine测试我们的ExtJs 4.1应用程序。现在,Everythings在Chrome和Firefox中完美运行,但IE 7到9版本一如既往地制造麻烦。
onreadystatechange
功能
如果readyState
为1
,则为SCRIPT575
(由于错误c00c023f
而无法继续)
如果readyState
是2
,那么SCRIPT10
(所需数据尚不可用)
请参阅此Jsfiddle(搜索“错误”以跳转到该行)
此外,还有一个错误TypeError: Object expected
。
我读过的内容:
我阅读了一些帖子,例如this和that,但没有一项建议修正过。
注意:
在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
...
你能指导我如何解决这个问题吗?我不知道。
答案 0 :(得分:1)
在读取responseXML / responseText属性之前检查readyState值。如果readyState值为4,则可以安全地访问responseXML / responseText
(XMLHttpRequest的原始实现和后来的规范要求在对象完成I / O操作之前在访问数据时抛出异常)
答案 1 :(得分:-1)
有一个名为response
的属性应为responseText
。
此外,我正在使用readyState
if( typeof oXhr.readyState !== 'undefined' ) {}
现在我的代码适用于IE8,IE9(标准版)。
然而,IE8,IE9(Quirks)和IE 7(Quirks& Standard)失败并出现错误:
SCRIPT16389: Unknown error
我会尝试修复,但这个问题已经完成。