2012-08-13 136 views
2

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

$.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来表示,其中将去测试信息理应从数据来然而[I] .comments.from.username这不是工作,我画空白。我已经使用JSFiddle来试图找出我要出错的地方,但没有成功。

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

谢谢!

+0

你会得到什么回应?你可以发布返回的json吗? – Jeemusu 2012-08-13 06:50:46

+0

似乎没有什么可以回来的,我很困惑,为什么这是和把回调=?最后似乎也没有工作。 – GeordieDave1980 2012-08-13 06:52:05

+0

我使用'getJSON()'而不是'ajax()'来抓取我的数据,这是我如何做的一个例子。 http://jsfiddle.net/wPheR/3。不幸的是,似乎jsfiddle是instagrams块列表,但至少你可以看到代码。 – Jeemusu 2012-08-13 07:01:21

回答

2

你的代码是合理的,但问题是,你看从您的计算机文件系统file://....../index.html的页面,不会对跨域请求工作。

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


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

**更新**
最后一点似乎其实并不真实,而一些API的需要你主机上的应用程序中指定的同一个域中的文件,Instagram的才不是。

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

+0

谢谢你的帮助,非常感谢。我已在我的网站托管网站上实施,并且完美运作。尽管你必须在同一台服务器上,但你肯定是正确的。再次感谢! – GeordieDave1980 2012-08-14 22:53:38

5

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

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