【问题标题】:jquery each function not giving results?jquery每个函数都没有给出结果?
【发布时间】:2012-01-30 21:39:16
【问题描述】:

我有一个 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。所以我认为问题与此有关?

【问题讨论】:

  • 你遇到了什么错误?响应是否有效 JSON P
  • console.log(data) 给了我所有我想要的 jsonp 数据,所以它是有效的
  • 你能发布console.log(data)的输出吗?
  • @Jasper 你可以看到here

标签: jquery ajax json jsonp


【解决方案1】:
$.each(data.data, function(i, item){

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

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

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

这是一个演示:http://jsfiddle.net/YrJXG/

【讨论】:

    【解决方案2】:

    您的 $.each 应如下所示:

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

    注意它的“data.data”不是“data”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多