最近我一直试图通过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的问题,我只使用过这个。任何可能有用的代码都会很好!
谢谢!
答案 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则不然。
只需确保从托管环境运行脚本。