Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于..in和jQuery';美元兑换()唐';t在IE中为XMLHttpRequest工作_Javascript_Internet Explorer_For In Loop - Fatal编程技术网

Javascript 用于..in和jQuery';美元兑换()唐';t在IE中为XMLHttpRequest工作

Javascript 用于..in和jQuery';美元兑换()唐';t在IE中为XMLHttpRequest工作,javascript,internet-explorer,for-in-loop,Javascript,Internet Explorer,For In Loop,更新:仅当我使用较旧版本的jQuery(1.3.2)而不是最新版本(1.4.2)时,问题才会出现 原始问题: 我发现了一个奇怪的行为,我想知道是否有任何解决办法。javascript“for”循环可用于枚举对象的属性名称。我发现,在IE上,它对某些对象不起作用,尤其是XMLHttpRequest。考虑下面的代码。它将为Firefox上XMLHttpRequest上的每个属性打开一个警报框。但是,在IE上未找到任何属性。如果我使用调试器,对象上肯定有属性。 如果我使用jQuery的$.for()函

更新:仅当我使用较旧版本的jQuery(1.3.2)而不是最新版本(1.4.2)时,问题才会出现

原始问题:

我发现了一个奇怪的行为,我想知道是否有任何解决办法。javascript“for”循环可用于枚举对象的属性名称。我发现,在IE上,它对某些对象不起作用,尤其是XMLHttpRequest。考虑下面的代码。它将为Firefox上XMLHttpRequest上的每个属性打开一个警报框。但是,在IE上未找到任何属性。如果我使用调试器,对象上肯定有属性。 如果我使用jQuery的$.for()函数,我会看到相同的结果

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
      "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

    <script src="http://code.jquery.com/jquery-latest.js"></script>

    <script>
        $(document).ready(function() {

            $.ajax({
                url: "/willneverwork/",
                timeout: 1,
                error: function(xmlHttpRequest) {

                    for (key in xmlHttpRequest) {
                        alert(key);
                    }
                }
            });
        });
    </script>

</head>
<body>
</body>
</html>

$(文档).ready(函数(){
$.ajax({
url:“/willneverwork/”,
超时:1,
错误:函数(xmlHttpRequest){
for(输入xmlHttpRequest){
警报(键);
}
}
});
});

在jQuery 1.3.2中,ajax方法使用以下代码创建XMLHttpRequest:

return window.ActiveXObject 
           ? new ActiveXObject("Microsoft.XMLHTTP") 
           : new XMLHttpRequest();

这意味着在IE7和IE8中,不是实例化本机XMLHttpRequest对象,而是实例化ActiveX等价物Microsoft.XMLHTTP。简而言之,ActiveX控件的属性和方法是不可枚举的,因此,中的“
for…”将不会发现任何内容

在IE8中适用于我:
for(新XMLHttpRequest()中的k)警报(k)也在兼容模式下工作。你考了哪一门?谢谢,安迪。根据你的建议,我无意中发现了问题。