2009-11-04 92 views
0

我有一个像Javascript数组对象失败抛出“对象错误”,在IE

{arr = {"0":{"name":"henry","role":"user"},"1":{"name":"mark","role":"admin"}} 

JavaScript数组对象我有一个请求该数组从我的服务器(通过包括URL的脚本标签到我的服务器上的HTML函数,服务这个数组}}

问题是,当我在Firefox中运行我的HTML文件时,它很容易检测到这个数组,并用它做了进一步处理,但在IE上,当我尝试访问数组元素时,它会抛出异常(对象为null或undefined)。

任何想法为什么元素检测可能在IE中失败。

如何找出IE中数组对象的属性?

+1

您能告诉我们您用来访问元素的代码吗?另外,你使用的是什么版本的IE? – theycallmemorty 2009-11-04 14:13:08

+1

也许不是这个问题,但是在你的代码片段中有一个额外的括号。 – 2009-11-04 14:22:10

+1

您不会在该代码中显示任何数组:我能看到的都是嵌套的对象文字。 – NickFitz 2009-11-04 14:40:56

回答

1

这是不是一个真正的数组,是一个简单的物件常数值属性,你应该使用迭代它的... in语句:

var arr = {"0":{"name":"henry","role":"user"}, 
      "1":{"name":"mark","role":"admin"}}; 

for (var key in arr) { 
    if (arr.hasOwnProperty(key)) { 
    // value = arr[key]; 
    } 
} 

但我认为你应该简单地返回一个真正的阵列:

var arr = [{"name":"henry","role":"user"}, 
      {"name":"mark","role":"admin"}]; 
+0

问题是,当我尝试服务数组形式我的PHP代码的JavaScript文件,IE浏览器将其视为字符串而不是数组。这就是为什么它失败。 我在我的文章中写道“然而,如果我尝试检查数组长度(在IE中),它会显示正确的长度。”这是不正确的..我检查了这个代码,它显示了字符串长度,而不是数组长度。所以基本上IE不能将它检测为数组。 – Annibigi 2009-11-05 06:41:40