Javascript JSON结果抛出文本为空错误

时间:2013-07-25 00:56:47

标签: ajax json instagram

我正在使用ajax从instagram中提取照片。下面是ajax调用:

$.ajax({
    type: "GET",
    dataType: "jsonp",
    cache: false,
    url: "https://api.instagram.com/v1/media/search?lat=" + lat +"&lng=" + lng + "&distance=" + distance + "&access_token=" + accessToken + "",
    success: function(data) {

        for (var i = 0; i < 6; i++) {
             $("#instagram").append("<li><a class='group' title='' href='" + data.data[i].images.standard_resolution.url +"'><img src='" + data.data[i].images.thumbnail.url +"' /></a>");   
        }     

    }
});

由于anchors title属性保留为空白,因此效果很好。我使用title='" + data.data[i].caption.text + "'将Instagram标题作为主题标题。在大多数情况下,这是有效的,但我经常会收到以下错误:“Uncaught TypeError:无法读取属性'text'的null”

我假设发生这种情况的原因有两个: A)根本没有标题 B)带有不能作为标题的字符的标题。

有谁知道为什么会这样,还有我如何解决这个问题?我尝试了以下但是它引发了同样的错误:

if(data.data[i].caption.text != null) { 
     var title = data.data[i].caption.text;
} else {
     var title = "";
}

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

如果没有附加标题,Instagram不会返回该字段。只需添加另一个空检查。

if (data.data[i].caption !=null) {
    if(data.data[i].caption.text != null) { 
       var title = data.data[i].caption.text;
    } 
} else { 
   var title = "";
}

答案 1 :(得分:1)

for (x in data.data) {
    var title_text = '';

    if (data.data[x].caption != null) {
        if (data.data[x].caption.text != null) {
            title_text = data.data[x].caption.text;
        }
    } else {
        title_text = "";
    }

    $("#instagram").append("<a target="_blank" href="' + data.data[x].link + '">" + title_text);
}
相关问题