【问题标题】:jQuery.getJSON not working for twitterjQuery.getJSON 不适用于推特
【发布时间】:2011-07-08 05:12:26
【问题描述】:

谁能告诉我为什么这个 jQuery 函数不起作用。它不会引发alert

$.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?',
  {
      screen_name: 'samajshekhar',
      count: '5',
  },
 function (data) {
      alert('hello world from twitter');
  });   

在提琴手中,我可以看到预期的 JSON 已返回。

但是,当使用 jQuery 文档中的示例代码调用 flicker 的 api 时,它会按预期给出 alert

$.getJSON('http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?',
  {
    tags: 'cat',
    tagmode: 'any',
    format: 'json'
  },
  function(data) {
   alert('hello world from flicker');   
  });

这里是sample code on JS Bin

我尝试了即使使用 facebook 的图形 API 仍然没有 alert

sample code 中,我尝试了对 facebook、twitter、flicker 的 getJSON 调用,但只引发了 flicker 的调用 alert

【问题讨论】:

    标签: jquery facebook twitter getjson


    【解决方案1】:

    你需要在url后面附加一个回调参数,让它变成一个jsonp调用。

    http://api.twitter.com/1/statuses/user_timeline.json?callback=?
    

    【讨论】:

    • 它应该可以工作。这对我来说很好,例如:api.twitter.com/1/statuses/user_timeline.json?screen_name=marcusf&callback=function_i_want_to_run。给我正确的 jsonp 响应。
    • 是的,它有效..thanx.. 它不适用于 jsoncallback 但适用于回调.. 任何解释.. 我是 jQuery 的新手 ^_^
    【解决方案2】:

    你的url中没有JSONP参数

    $.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?jsoncallback=?',
    

    【讨论】:

      【解决方案3】:

      这两个示例的区别在于 Flickr API 调用返回 JSONP 结果,而 Twitter API 调用返回 JSON 结果。 Twitter 调用,因为响应是 JSON,违反了Same Origin Policy,它阻止运行来自另一个域的脚本;另一方面,JSONP 响应不受此规则的约束。

      正如其他用户所指出的,附加 '?callback=?'到请求 URL 和 Twitter API 响应将采用 JSONP 的形式。

      【讨论】:

      • 你能解释一下为什么闪烁与jsoncallback=?一起工作而facebook和twitter在url中与callback=?一起工作
      • 无论如何我从这里得到了答案stackoverflow.com/questions/2067472/please-explain-jsonp
      • @Shekhar_Pro 不错的链接,我发现这对自己很有帮助。正如作者所指出的,响应返回为 JSON 还是 JSONP 取决于服务器如何处理您的请求。对于 Flickr 和 Twitter,前者的 API 需要一个名为“jsoncallback”的参数,而后者只需要一个“callback”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多