2012-11-02 31 views
1

當試圖使用jQuery解析Flickr feed時,在控制檯中使用JSFiddle和Chrome獲取此錯誤:http://jsfiddle.net/YdM8n/2/獲取錯誤:NOT_FOUND_ERR:使用jQuery解析JSON時Chrome中的DOM異常8

代碼:

// a flickr rss feed i am trying to parse. 
var yql3 = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%22http%3A%2F%2Fapi.flickr.com%2Fservices%2Ffeeds%2Fphotos_public.gne%3Fid%3D76250020%40N04%26lang%3Den-us%26format%3Drss_200%22&format=json&diagnostics=true&callback=?"; 

$.getJSON(yql3, function(cbfunc) { 

    var eachImageArr = $(cbfunc.query.results.rss.channel.item); 

    $(eachImageArr).each(function() { 
     $('body').append(this.description); 
    }); 

});​ 

感謝您的幫助!

+2

擺弄,最後的結果有一些數組等奇怪的內容,只是刪除它修復了錯誤:http://jsfiddle.net/YdM8n/3/ – adeneo

+1

@ adeneo陣列是問題,但刪除它不是解決方案。把數組的元素和追加數據結合起來是很有意義的,但是這樣做是可行的...... – Ian

+0

@adeneo Lame解決方案。你甚至在小提琴中測試它。 –

回答

2

如果你看一下實際的JSON回來,你會注意到description項目的可能的格式可以是:

"description": ["html stuff", {some object}] 

當通過每一個描述循環,您可以檢查,看它是否是一個數組,如果是,則將[0]索引附加到正文。喜歡的東西:

http://jsfiddle.net/YdM8n/5/

var eachImageArr = cbfunc.query.results.rss.channel.item; 

$.each(eachImageArr, function() { 
    if ($.isArray(this.description)) { 
     $("body").append(this.description[0]); 
    } else { 
     $("body").append(this.description); 
    } 
}); 

但很明顯的API需要研究更使不能發生確保其他特殊情況......或者至少嘗試考慮類似的東西。

+0

哦,男士,你晚了一點晚,但這是一個很好的答案。我確實給你一個upvote。謝謝! :) – jonathanbell

+0

哦相信我,我沒有遲到 - 我一直在看這個,並試圖找出問題,因爲你問這個問題。我遲到了「提供答案」派對。但無論如何,這實際上爲您的問題提供了一個解決方案。這可能不是一個全面的答案(因爲我們不確定API現在可以向你扔什麼曲線球),但它似乎工作,並沒有拋出異常... – Ian

+0

我給了你更多的觀點。好偵探。 – jonathanbell

3

問題是,在數組的第18個元素中,描述實際上是一個數組,其第一個元素是您期望的,第二個元素是另一個對象。

description: Array[2] 
0: "   <p><a href="http://www.flickr.com/people/jonathanbell/">jonathanbell.ca</a> posted a photo:</p>↵ ↵<p><a href="http://www.flickr.com/photos/jonathanbell/7290239398/" title="120405_sophia_004"><img src="http://farm8.staticflickr.com/7075/7290239398_3c4b7905da_m.jpg" width="180" height="240" alt="120405_sophia_004" /></a></p>↵↵<p>sophia dishaw</p>" 
1: Object 
    content: "<p>sophia dishaw</p>" 
    type: "html" 

我對flickr api不夠熟悉,告訴你第二個字段是什麼,但它似乎是一個名字。

+0

以前的編輯比較好;) – VisioN

+0

@VisioN有時候提交按鈕會離我而去...... –

+0

@NuclearGhost謝謝!好眼睛! :)我將不得不通過一些if語句來檢查該項是否實際上是一個數組,如果是,則使用[0]元素(我也不知道Flickr API)。你們都認爲這是解決這個問題的最好方法嗎?感謝你的幫助!再次感謝。 :) – jonathanbell