2012-08-13 27 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=?",