2013-07-25 39 views
0

我正在使用ajax從instagram中拉出照片。以下是阿賈克斯電話:Javascript JSON結果會拋出文本爲空錯誤

$.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>"); 
     }  

    } 
}); 

由於錨標題屬性留空的事實,這很有效。我正在使用title='" + data.data[i].caption.text + "'將Instagram標題作爲錨標題。在大多數情況下,這個工作,但我經常收到以下錯誤:「遺漏的類型錯誤:無法讀取屬性空的‘文’」

我假定這是由兩個原因之一發生: A)根本沒有標題 B)字符不能用作標題的標題。

有誰知道爲什麼會發生這種情況,還有我該如何解決這個問題?我嘗試以下,但它拋出了同樣的錯誤:

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

任何想法?

+0

A是這裏的情況:標題爲空。 B不會觸發該錯誤。我想這個響應不包括空字段來優化網絡。在使用標題屬性之前檢查null。 – LexLythius

+0

當我正在檢查時,如何在使用它之前檢查空值...如果標題爲空? – JCHASE11

回答

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 = ""; 
} 
+0

這很好,謝謝。我不知道,如果留空,Instagram不會返回該字段。我認爲它只會返回一個空字符串 – JCHASE11

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); 
}