2

所以最近我一直在尝试通过 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,我对任何其他 API 都没有任何问题。任何可能有帮助的代码也会很好!

谢谢!

4

2 回答 2

5

尝试附加&callback=?到网址。

url: "https://api.instagram.com/v1/tags/olympics/media/recent?client_id={clientid}&callback=?",
于 2012-08-13T05:54:13.267 回答
2

您的代码是正确的,但问题是您从计算机文件系统查看页面,file://....../index.html这不适用于跨域请求。

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


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

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

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

于 2012-08-14T01:16:18.943 回答