【问题标题】:Cant parse json data from twitter api无法从 twitter api 解析 json 数据
【发布时间】:2011-10-31 05:49:46
【问题描述】:

我正在尝试根据 id 获取 twitter 用户名列表,但我无法让 jquery 解析到 twitter api 返回的 json 数据。而不是显示我得到的名称:[object Object]。我检查了结果,它似乎是有效的 json 数据。我需要帮助了解如何使用这些数据。

这是我正在使用的代码:

    $.getJSON('https://api.twitter.com/1/users/lookup.json?user_id=16917715', function(data) {
    var items = [];
      $.each(data, function(key, val) {
        items.push('<li id="' + key + '">' + val + '</li>');
      });
      $('<ul/>', {
        'class': 'twitter-names-list',
        html: items.join('')
      }).appendTo('#follower-names');
});

【问题讨论】:

    标签: jquery json twitter


    【解决方案1】:

    我很确定您需要使用 JSONP 而不是 JSON。通常你不能进行跨域ajax调用,这可能是这里失败的原因。这是一个很好的article on the subject

    IIRC 您可以简单地将 &amp;callback=? 添加到您的 GET 请求中。这将使您的请求$.getJSON('https://api.twitter.com/1/users/lookup.json?user_id=16917715&amp;callback=?',...

    jQuery 将用动态函数替换 ? 来处理数据,它应该更适合您

    【讨论】:

    【解决方案2】:

    &amp;callback=?添加到url以检索数据

    $.getJSON('https://api.twitter.com/1/users/lookup.json?user_id=16917715&callback=?', function(data) {
        console.log(data);
    });
    

    【讨论】:

      【解决方案3】:

      我没有使用过 API,但是从 https://dev.twitter.com/docs/api/1/get/users/lookup 看来,结果似乎是一个对象数组。如果我正确阅读了您的代码,那么您似乎正在迭代数组,而不是数组中对象的属性。我会将您当前的$.each() 电话转入

      for( var x = 0; x < data.length; x++ )
      {
          $.each(data[ x ], function(key, val){
          ...
          });
      }
      

      【讨论】:

      • 查看您的代码后,我不确定您到底要做什么。起初,您似乎在尝试迭代数组的属性并列出每个属性,但从您的描述来看,您似乎只是在尝试从 twitter 创建用户名列表。如果是这种情况,您就不需要 $.each,您只需要访问返回的用户数组中每个对象的 name 和 id 属性即可。
      • 谢谢,这回答了我的问题。我现在只需要用户名,但我也想了解如何获取所有属性。我不明白为什么json数据不起作用,但这是因为它是一个数组而不是一个对象。
      • 不要固执己见,但如果我的回答对您有帮助,您能否通过单击我的回答旁边的复选标记将其标记为正确?
      猜你喜欢
      • 2011-05-23
      • 2012-03-26
      • 2020-03-31
      • 2016-02-20
      • 2012-11-09
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多