使用JQuery从Instagram api中提取信息

时间:2012-08-13 05:47:17

标签: jquery api jsonp instagram

最近我一直试图通过ajax和使用jquery向Instagram API发出请求。我似乎有点麻烦。我试图从通过GET请求来的JSON数组中获取可用的信息,并且似乎只能访问数组的一小部分,其他所有内容都是未定义或空白。这是我正在使用的代码:

$.ajax({
type: "GET",
dataType: "jsonp",
cache: false,
url: "https://api.instagram.com/v1/tags/olympics/media/recent?client_id={clientid}",
success: function(response) {
  for (var i=0; i<25; i++)  
  {
    $("#photos").html(response.data[i].comments.from.username);
  }

  }
});

只是使用{clientid}来表示它会去哪里,测试信息应该来自data [i] .comments.from.username但是这不起作用而且我画了空白。我已经使用JSFiddle试图找出我出错的地方但没有成功。

有没有人对如何克服这个障碍有任何想法?我没有任何其他API的问题,我只使用过这个。任何可能有用的代码都会很好!

谢谢!

2 个答案:

答案 0 :(得分:5)

尝试将&callback=?添加到网址。

url: "https://api.instagram.com/v1/tags/olympics/media/recent?client_id={clientid}&callback=?",

答案 1 :(得分:2)

您的代码是合理的,但问题是您从计算机文件系统file://....../index.html查看页面,这对于跨域请求无效。

您必须从托管环境http://localhost/..../index.html运行代码,因为ajax发出http请求,并且这些请求必须转到同一个域/服务器。


您可能还需要在Instagram应用程序(在instagrams网站上)设置“网站网址”,Instagram API将使用该网址对您client_id的请求进行身份验证,以确保它们来自正确的域。简而言之,您必须在Instagram网站上的应用程序中指定的同一域中托管您的文件,否则请求将失败。

**更新**
实际上,最后一点似乎并不正确,而某些API要求您在应用程序中指定的同一域上托管文件,而instagram则不然。

只需确保从托管环境运行脚本。