jquery每个函数都没有给出结果?

时间:2012-01-30 21:39:17

标签: jquery ajax json jsonp

我有一个AJAX调用拉一个JSONP文件,它会在控制台中给我数据,但当我尝试将结果放入一个数组:topics时,我收到一个错误。

    $.ajax({
        type: 'GET',
        url: 'http://demo.omnigon.com/christian_bovine/nbapulse/json/all.json',
        dataType : 'jsonp',
        jsonp : "callback",
    jsonpCallback: "onDataLoaded",

        success : function(data) {
            console.log(data); 
            var topics = [];

            $.each(data, function(i, item){
                topics.push({
                    username: item.TopicName,
                    mentions: item.LastHourCount,
                    totalcount: item.TotalCount,
                    daycount: item.LastHourCount
                });
            });
            console.log(topics);
        $('#leader').tmpl(topics).appendTo('#top3');
        } 

    });

如果我使用$.each(data.results, function(i, item),它将显示我的jQuery模板,但所有数据都将是undefined。所以我认为问题与此有关?

2 个答案:

答案 0 :(得分:2)

$.each(data.data, function(i, item){

这应该可以解决问题,您的对象如下所示:

{
    data : [
        {},
        {},
        ...
    ]
}

因此,在迭代结果之前,您需要选择data属性。

以下是演示:http://jsfiddle.net/YrJXG/

答案 1 :(得分:0)

你的$ .each应该是这样的:

$.each(data.data, function(i, item){
                    topics.push({
                        username: item.TopicName,
                        mentions: item.LastHourCount,
                        totalcount: item.TotalCount,
                        daycount: item.LastHourCount
                    });
                });

注意它的“data.data”而非“数据”。