2016-04-25 74 views
0

这是我的JSONdata.forEach不是函数

[ 
"59191", "TypeAV - Canada", "Available", 
"422129", "TypeAA - Italy", "Available", 
"959191", "TypeBB - USA", "N/A", 
"6D968C", "TypeAV - Canada", "Available" 
] 

和js

$.ajax({url: 'test.json'}).done(function(data) { 
    $.each(myArr, function() { 
    data.forEach(function (line) { 
     //do something 
    }); 
    }) 
}) 

我得到一个Uncaught TypeError: data.forEach is not a function。如何解决这个问题?

+3

什么是“myArr”?它从何而来?看起来你使用的是'line'这个名字来表示两个不同的东西。 – Pointy

+0

它看起来像数据不是数组 – maioman

+0

'console.log(typeof data)'显示什么? – Barmar

回答

4

data显然不是一个数组。如果服务器发送Content-type: application/json$.ajax将自动将响应解析为JSON,但不能这样做。由于jQuery不知道响应应该被解析为JSON,它只是将字符串响应传递给回调函数。

所以你需要告诉JQuery它是JSON并且需要被解析。最简单的方法是使用$.getJSON而不是$.ajax,因为您没有将任何复杂选项传递给$.ajax

$.getJSON('test.json', function(data) { 
    ... 
}); 

您还可以使用dataType:选项`$阿贾克斯。

$.ajax({ 
    url: "test.json", 
    dataType: "json" 
}, function(data) { 
    ... 
});