2012-02-29 69 views
-1

UDPATE:那麼通過多維陣列消除的最佳方法是什麼?所以要檢查複雜陣列內部的物體並抓住它們的值。Javascript(jQuery)測試json對象中的數組和返回值

 

{ "error":{ 
     "data": { 
      "id":"3", 
      "name":"404", 
      "content" : "value" 
     }, 
     "response":"Invalid path.", 
     "code": 1 
    } 
} 

if(json.error.data !== undefined) { 
     alert('value: ' + json.error.data); 
} 

我在這裏有一個問題;我似乎無法正確解決。當我嘗試檢查數組的值時,它會返回錯誤「Uncaught TypeError:如果數組數據不存在或內容不存在,則無法讀取未定義的屬性'數據'。我知道有一種方法可以使用indexOf()來測試值是否存在,但這對我沒有幫助。我需要測試這個值然後捕獲它。請記住,這是一個多維數組,因此使用indexOf不一定會定位數組的複雜性以及如何定位它。

好的,就這麼簡單。我需要說的是,數組數據和參數內容是否存在於上面顯示的錯誤數組中。如果是這樣,那麼捕捉它的價值並做一些事情。我也讀過關於jQuery.inArray();我不知道如何使用jQuery.inArray();我也閱讀關於jQuery.inArray();我不知道如何使用jQuery.inArray();我不知道如何將它用於複雜的多維數組。

是唯一成功的方式做到這一點使用(在Z X){}

+0

如果你看到 「不能讀取屬性未定義 '數據'」 試圖訪問json.error.data時,那麼問題不在於數據未定義,而是該錯誤未定義。 – CodeThug 2012-02-29 03:44:25

+0

這顯然不是您的實際代碼。字符串是說你從服務器獲取JSON數據的一種方式嗎? – 2012-02-29 03:51:21

+0

json數據被轉換成一個對象並被卡入數組中。當我嘗試訪問該數組以測試是否存在具有值的另一個數組時,我得到一個錯誤。 – kr1zmo 2012-02-29 03:53:57

回答

1

要測試undefined,請使用typeof和字符串'undefined'

另外,在將字符串解析爲JSON之後,檢查.error的父屬性是否存在.data。從代碼中不清楚這是否已經完成。

var obj = JSON.parse(json); 

if (typeof obj.error !== 'undefined') { 
    if(typeof obj.error.data !== 'undefined') { 
     alert('value: ' + obj.error.data); 
    } 
} 
+0

控制檯正在輸出,未捕獲TypeError:無法讀取未定義的屬性「數據」 – kr1zmo 2012-02-29 03:48:08

+0

@ kr1zmo請參閱上面的更改。同時檢查'json.error' – 2012-02-29 03:50:13

+0

_「你不能比較undefined與等號運算符」_ - 確定你可以:'if(obj.error === undefined)'(假設你確保'undefined'沒有被給定一個定義的值)或'if(obj.error === void 0)'。 – nnnnnn 2012-02-29 04:00:36

-1

我認爲一個循環的那樣簡單的事實,你已經包圍你的對象與報價,這使得它的一個字符串而不是一個對象。刪除這些,它應該工作正常。

0

我認爲你的對象錯了。

json = '{... 

您正在用單引號開頭。變量json現在是string,而不是JavaScript對象。

+0

我剛給你看json,所以你可以理解我我在做。在我的代碼中,json數據被轉換爲一個對象。但是當我嘗試測試一個值時,我得到了這個錯誤。 – kr1zmo 2012-02-29 03:45:05

+0

我不相信它是:http://jsfiddle.net/remibreton/5eYMG/ – 2012-02-29 03:47:53

+0

它甚至不是一個字符串。這是一個SyntaxError。 – 2012-02-29 03:52:24

0

聲明你的對象,因爲這

json = 
{ 
    "error":{ 
     "data": { 
      "id":"3", 
      "name":"404", 
      "content" : "value" 
     }, 
     "response":"Invalid path.", 
     "code": 1 
    } 
};