2009-11-04 89 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