2014-12-04 100 views
1

嗨我正在使用json向我的表发送一个歌曲列表.json响应会很好,直到控制器url.But当我尝试迭代通过它和把细节放在我的表中我得到这个错误。未捕获的类型错误:undefiened不是JSON响应的函数

$(window).load(function(){ 
     $.get("/MusicPlayer/getSongList", function(data){ 
     var library = data; 
     listSongs(library); 
    }); 
}); 


function listSongs(library){ 
var table = $("#table"); 
var row; 
$("#table tbody").remove(); 
library.forEach(function(song){ ***/*this is the line where there is error. */*** 
    row = $("<tr></tr>"); 
     $("<td />").addClass("song-select").append($("<input 
     />").attr({type:"checkbox",class:"checkbox",value:song.title})).appendTo(row); 
     $("<td>"+song.title+"</td>").appendTo(row); 
     $("<td>"+song.album+"</td>").appendTo(row); 
     $("<td>"+song.artist+"</td>").appendTo(row); 
     $("<td>"+song.rating+"</td>").appendTo(row); 
     $("<td>"+song.composer+"</td>").appendTo(row); 
     $("<td>"+song.genre+"</td>").appendTo(row); 
     row.click(viewFunction()); 
     row.appendTo(table); 
}); 


[ 
{ 
    "title": "15 - Jacob's Theme.mp3", 
    "album": "The Twilight Saga - Eclipse", 
    "artist": "Howard Shore", 
    "rating": "2", 
    "composer": "carter ruwell", 
    "genre": "Soundtrack" 
}, 
{ 
    "title": "07_-_Vennante.mp3", 
    "album": "Andala Rakshasi (2012)", 
    "artist": "Ranjith", 
    "rating": "0", 
    "composer": "Rathan", 
    "genre": "TeluguMusic" 
}, 
{ 
    "title": "08. One Simple Idea.mp3", 
    "album": "Inception (OST)", 
    "artist": "Hans Zimmer", 
    "rating": "0", 
    "composer": "null", 
    "genre": "?????????" 
} 
    ] 
+0

在回调中做一个'console.log(data)'。显示什么? – Ryan 2014-12-04 07:05:44

回答

1

一个json响应是在一个非常特殊的格式,但仍然只是一个字符串。

在能够使用它作为Javascript数据之前,您需要使用JSON.parse解析它。

2

我猜你需要$.parseJSON,因为library应该是一个JSON格式的字符串,不是一个真正的数组。

$.parseJSON(library).forEach(function(song){ ..... 
0

json对象没有为其定义的函数forEach

使用for循环:

for(var song in library) { 
    console.log(song, result[song]); 
} 

或使用jQuery each

$.each(library, function(key, value) { 

});​ 

forEach仅仅是简单的数组,并在支持ECMAScript5环境。 看看这太:For-each over an array in JavaScript?

相关问题