2015-10-15 166 views
1

我正在使用簡單的JSON Ajax請求來獲取一些JSON數據。 但是,所有的時間,我嘗試使用JSON對象,我得到了以下問題:簡單請求:未捕獲TypeError:無法讀取未定義的屬性「長度」

Uncaught TypeError: Cannot read property 'length' of undefined

$(document).on('pageinit', '#home', function() { 
    $.ajax({ 
     url: "http://localhost/documents.json", 
     dataType: "json", 
     type: 'GET', 
     async: true, 
     success: function(result) { 
      //ajax.parseJSON(result); 
      $.each(result, function(idx, obj) { 
       alert(obj.name); 
      }); 
     }, 
     error: function(request, error) { 
      alert('Network error has occurred please try again!' + ' ' + request + ' ' + error); 
     } 
    }); 
}); 

我的JSON文件是有效的,看起來像這樣:

{ 
    "books": [{ 
    "id": "01", 
    "name": "info", 
    "dateiname": "info.pdf" 
    }, { 
    "id": "02", 
    "name": "agb", 
    "dateiname": "agb.pdf" 
    }, { 
    "id": "03", 
    "name": "raumplan", 
    "dateiname": "raumplan.pdf" 
    }, { 
    "id": "04", 
    "name": "sonstiges", 
    "dateiname": "sonstiges.pdf" 
    }, { 
    "id": "05", 
    "name": "werbung", 
    "dateiname": "werbung.pdf" 
    }] 
} 
+0

這是你的console.log成功的結果嗎? – guradio

+0

如何/你在哪裏檢查什麼是「長度」? – Tushar

+0

@Pekka是的,這是控制檯輸出。我沒有檢查任何東西。我只想解析JSON文件並將其添加到列表視圖 – jublikon

回答

0

您應該執行類似如下:

if(result && result["books"]) { 
    $.each(result["books"], function(idx, obj) { 
     alert(obj.name); 
    }); 
} 
+0

'jQuery.each'可以在一個對象上循環。 – Magus

+0

@Magus是的,'jQuery.each'可以在一個對象上循環,但'result'不是一個數組。 – Flea777

0

jQuery.each如果您提供0123價值。但是result不能被定義,否則jQuery會拋出JSON解析錯誤。至少result是一個空對象{}(或一個空數組[])。

你的代碼從來沒有讀過任何東西的length。所以我假設你的錯誤是在你的代碼中的其他地方。

仔細檢查控制檯中的錯誤。你應該有錯誤的確切路線。還有堆棧。

但是你的代碼仍然存在錯誤。你應該有這個:

$.each(result.books, function(idx, obj) { 
    alert(obj.name); 
}); 
相關問題