如何打印我的JSON数据?

时间:2015-06-26 12:22:12

标签: javascript ajax json

我尝试在我的本地主机上获取一个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);
        });
    }
    });

我知道如何解决这个问题?

4 个答案:

答案 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变量中,当您再次定义时会覆盖。

看看这里

What is the scope of variables in 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);
         }
}