2015-09-09 28 views
2

下面是json數據。我想要做的是,我想檢查數據是否爲空,然後顯示No Records文本。以下是我的代碼。然而,我總是得到Uncaught TypeError:無法讀取行.detailedInfo[0]!=null undefined屬性'detailedInfo'我該如何解決這個問題?如何檢查json數據的值是否爲空

{ 
     "status": "0", 
     "message": "", 
     "objectList": [{ 
      "customerID": "A112", 
      "dateReg": "31/08/2015", 
      "detailedInfo": [{ 
       "purchDate": "01/08/2015", 
       "prodCode": null, 
       "price": null, 
       "catefory": "BF" 
      }], 
      "subTotal": 23.00 
     }], 
     "objectList2": null 
    } 

if(data.objectList[0].detailedInfo[0]!=null){ 
    for(var i=0;i<data.objectList[0].detailedInfo.length;i++){ 
      var purchaseDt = data.objectList[0].detailedInfo[i].purchDate; 
      var productCd = data.objectList[0].detailedInfo[i].prodCode; 
      var category = data.objectList[0].detailedInfo[i].myrEquiv; 

      $('#Date').append(purchaseDt); 
      $('#Code').append(productCd); 
      $('#Category').append(category); 
    } 
} 
else{ 
    $('#noDataMsg').text("There is no record found"); 
    $('#noDataMsg').show(); 
} 
+0

只有當你試圖訪問一個'infoData'時,'var category = infoData [0] .detailedInfo [i] .myrEquiv;' – guradio

+0

http://jsfiddle.net/ub0oug4x/ – guradio

+0

然後在訪問該元素之前檢查該數組是否已定義並且不爲空,並且該數組的長度小於或等於索引位置。所以在OP中提到的行之前添加這行'if(data.objectList [0] .detailedInfo)'。同樣的事情也適用於'data.objectList [0]' –

回答

3

你所得到的錯誤的原因是因爲data.objectList是一個空數組[],所以試圖訪問任何在零偏移,像data.objectList[0]undefined,因此你不能訪問的undefineddetailedInfo

爲什麼不簡單地測試objectList存在,並且它的長度大於零,就像這樣;

if(data.objectList && data.objectList.length > 0){ 
    ... 
} else { 
    ... 
} 

上面應該這樣做,除非你需要處理極端情況,例如鏈表類突然被一個字符串,而不是一個陣列 - 根據您的要求,您可以測試增加的if語句typeof != 'string'以處理這種情況。

+0

我仍然得到相同的錯誤 –

1

檢查您的數據,因爲data.objectList [0]沒有一個detailedInfo屬性集。