我尝试在我的本地主机上获取一个JSON文件,但在控制台上我收到一个包含来自data.json的所有对象的数组但是我收到以下错误
Uncaught TypeError: Cannot read property 'forEach' of undefined
这是我的代码:
$.ajax({
type : 'GET',
dataType : 'json',
url: 'http://localhost:8888/data/folder/data.json',
success : function(data) {
console.log(data);
var data =[];
var covers = document.getElementById("covers");
var blockTemplate = covers.getElementsByTagName("div")[0].cloneNode(true);
covers.getElementsByTagName("div")[0].remove();
data.info.forEach( function(obj) {
block = blockTemplate.cloneNode(true);
block.getElementsByTagName("a")[0].setAttribute('href', obj.link);
block.getElementsByTagName("img")[0].setAttribute('src', obj.cover);
covers.appendChild(block);
});
}
});
我知道如何解决这个问题?
答案 0 :(得分:2)
删除
var data =[];
来自success()
。
这会覆盖ajax
回复。
答案 1 :(得分:1)
var data = data.info;
data.forEach( function(obj) {
block = blockTemplate.cloneNode(true);
block.getElementsByTagName("a")[0].setAttribute('href', obj.link);
block.getElementsByTagName("img")[0].setAttribute('src', obj.cover);
covers.appendChild(block);
});
答案 2 :(得分:0)
使用success : function(data) {
中的success : function(response) {
响应更改success
,您的data array
不明确。这会产生问题。在javascript变量中,当您再次定义时会覆盖。
看看这里
答案 3 :(得分:-1)
在您的情况下,我认为“数据”的“信息”对象未定义或未从服务器接收。
你也可以循环你的json对象,如下所示:
if(typeof(data.info) != "undefined")
for(i in data.info)
{
var obj = data.info[i];
block = blockTemplate.cloneNode(true);
block.getElementsByTagName("a")[0].setAttribute('href', obj.link);
block.getElementsByTagName("img")[0].setAttribute('src', obj.cover);
covers.appendChild(block);
}
}