1

我在使用 JSFiddle 和 Chrome 的控制台中收到此错误:http: //jsfiddle.net/YdM8n/2/尝试使用 jQuery 解析 Flickr 提要时。

代码:

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

});​

谢谢你的帮助!

4

2 回答 2

3

问题是在数组的第 18 个元素中,描述实际上是一个数组,第一个元素是您所期望的,第二个元素是另一个对象。

description: Array[2]
0: "            <p><a href="http://www.flickr.com/people/jonathanbell/">jonathanbell.ca</a> posted a photo:</p>↵    ↵&lt;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 不够熟悉,无法告诉您第二个字段是什么,但它似乎是一个名称。

于 2012-11-02T19:51:41.487 回答
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 需要进行更多调查,以确保不会发生其他特殊情况……或者至少尝试解释类似的情况。

于 2012-11-02T20:12:54.683 回答