2017-08-16 126 views
0

我目前正在嘗試使用Flickr API和JavaScript基於搜索查詢生成頁面,在這種情況下是狗。當行未定義不是對象 - 嘗試訪問json對象時

var hyperLink = "https://www.flickr.com/photos/" + photo.owner + "/" + photo.id + ".jpg"; 

運行狀態undefined不是一個對象photo.owner。我可以使用console.log(photo.owner)打印出photo.owner,但無法訪問它只是打印出url中的信息。

的完整代碼:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>The Flickr Experiment</title> 
</head> 
<body id ="1"> 


<script> 
    function jsonFlickrApi(rsp) { 
     var str = ""; 
     str +="<h1>Doggo piccies from Flickr</h1>"; 
     str +="<h3>Total piccies: " + rsp.photos.photo.length; 
     var i; 
     for (i = 0; i <= rsp.photos.photo.length; i++) { 
     var photo = rsp.photos.photo[i]; 
     var imageTitle = photo.title; 
     var hyperLink = "https://www.flickr.com/photos/" + photo.owner + "/" + photo.id + ".jpg"; 
     var imgLink = "https://farm" + photo.farm + ".staticflickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + "_t.jpg"; 
     str +="<a href=\"" + hyperLink + "\"><img alt=\"" + imageTitle + "\" src=\"" + imgLink + "\"/></a>" 
     } 

     document.writeln(str); 
    } 
</script> 


<script src="https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=XXXXf&tags=golden-retriever&per_page=100&format=json"> 
</script> 
</body> 

</html> 
+2

[有作爲 「JSON對象」 沒有這樣的事(http://benalman.com/news/2010/03/theres-no-這樣的事情作爲一個JSON /) –

+0

調試你的代碼。在調試器中瀏覽它,檢查變量的值。 SO不是人力遠程調試服務。 – 2017-08-16 05:52:43

+0

謝謝@FelixKling我真的很高興它像<=造成的那樣簡單,現在我已經拉了幾天頭髮。我認爲它沒能在第一遍檢索對象,並且非常困惑。我曾嘗試過很多對象/訪問數據解決方案,但沒有考慮到它是由我的循環引起的。 我非常習慣於調試Java,但我仍然在學習Chrome/Safari的調試工具,所以下次我會記住這一點! – Rick

回答

1

數組是從零開始的。這意味着如果一個數組的長度是3,則指數最高爲2。因此,循環條件必須是

i < rsp.photos.photo.length 
//^^ strictly smaller, not smaller or equal 

如果沒有,將訪問其並不索引(所述陣列的即長度)存在,這將導致undefined,你得到的錯誤。

簡單的例子:

var arr = [1,2,3]; 
 
console.log(arr[0]); 
 
console.log(arr[1]); 
 
console.log(arr[2]); 
 
console.log(arr[arr.length]);