data.forEach不是一个函数

Bec*_*cky 0 javascript jquery

这是我的json

[
"59191", "TypeAV - Canada", "Available", 
"422129", "TypeAA - Italy", "Available", 
"959191", "TypeBB - USA", "N/A", 
"6D968C", "TypeAV - Canada", "Available"
]
Run Code Online (Sandbox Code Playgroud)

和js

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

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

Bar*_*mar 6

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

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

$.getJSON('test.json', function(data) {
    ...
});
Run Code Online (Sandbox Code Playgroud)

你也可以使用dataType:`$ .ajax选项.

$.ajax({
    url: "test.json",
    dataType: "json"
}, function(data) {
    ...
});
Run Code Online (Sandbox Code Playgroud)