JSON数据未定义但出现在控制台日志中

时间:2015-02-01 23:01:38

标签: javascript jquery json each

我在以下位置访问以下JSON数据:

http://veratech.co.nz/blog/?json=1

当我尝试访问" url"位于下面代码第4行的数组中的属性,我得到一个未定义的错误。即使它将出现在console.log(第13行)中,也包含console.log(val.attachments [0] .url);.

以下代码:

        $.each(data.posts, function(index, val){
        output += '<li>';
        output += '<a href="#blogpost" onclick = showPost(' + val.id + ')">';
        output += '<img src="' + val.attachments[0].url + '" alt="">';
        output += '<h3>' + val.title + '</h3>';
        //Here we shorten the paragraph to 60 characters. 
        var str = val.excerpt;
        var paraInfo = str.slice(0, 60);
        output += '<p>' + paraInfo + '</p>';
        //Closing off the the closing html tags
        output += '</a>';
        output += '</li>';
        console.log(val.attachments[0].url);
    });//Go through each post

建议将不胜感激

1 个答案:

答案 0 :(得分:0)

我认为还有其他问题。

我手动下载了json,并编写了这段代码:

HTML:

Urls:
<ul id="foo">
</ul>

JavaScript的:

function extractUrls(data) {
    var $foo = $('#foo');

    $.each(data.posts, function (i, p) {
        $foo.append($('<li></li>').text(p.attachments[0].url));
    });
}

var jsonData = { /* code omitted for brevity */ };

extractUrls(jsonData);

我的输出是:

Urls:
<ul id="foo">
    <li>http://veratech.co.nz/blog/wp-content/uploads/2014/03/martial.jpg</li>
    <li>http://veratech.co.nz/blog/wp-content/uploads/2013/12/grave.jpg</li>   
    <li>http://veratech.co.nz/blog/wp-content/uploads/2013/12/GTA5.jpg</li>
    <li>http://veratech.co.nz/blog/wp-content/uploads/2013/10/miyagi.jpg</li>
    <li>http://veratech.co.nz/blog/wp-content/uploads/2013/08/htc-box.png</li>
    <li>http://veratech.co.nz/blog/wp-content/uploads/2013/08/scaffold1.jpg</li>
    <li>http://veratech.co.nz/blog/wp-content/uploads/2013/07/barriera.png</li>
    <li>http://veratech.co.nz/blog/wp-content/uploads/2013/06/tv.jpg</li>
</ul>

注意:您应该能够将var jsonData =行替换为:

$.get('http://veratech.co.nz/blog/', { json: 1 }, extractUrls, 'json');

反正;看不出你的代码出了什么问题?你确定这是问题吗?

PS:我甚至在$.each循环中添加了以下内容:

    if (!p.attachments[0].url) {
        alert(p.id + ' has undefined url!');
    }

并没有看到任何警报......

See code running in a jsFiddle here