我大部分時間都在嘗試使用JQuery中的'getJSON'方法來對付Flickr API。我設法看了一些JQuery文檔中的例子,並設法讓它們工作,但是嘗試從我的自定義API調用中讀取JSON失敗了。getJson與自定義的Flickr API調用會生成一個分析錯誤
摘錄:
這工作:
//JQuery Flickr example code - works!
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?&format=json",
function(data) {
$.each(data.items, function(i,item){
alert(item.media.m);
if (i == 3) return false;
});
});
這種失敗!
//Custom Flickr API Call - nothing?fail?
$.getJSON("http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=c258d8ae4c29bb74da198c6ac3874671&text=Mclaren&per_page=3&format=json&callback=?&nojsoncallback=1",
function(data) {
alert(data);
}).error(function(jqXHR, textStatus, errorThrown) { alert(textStatus + errorThrown); });
第二API調用是一個有效的資源,它工作在瀏覽器/小提琴手,我可以看到JSON的內容,但在我的JS代碼,將引發錯誤
"parsererrorError: jQuery18007627279118169099_1345796861535 was not called".
在這點我卡住了,最終我的最終目標是處理返回的JSON並遍歷嵌套數組中的每個「照片」對象,以便在迭代期間可以輕鬆訪問其子屬性,如下所示:
[photo-instance ] .id
[照片實例] .owner
[照片實例] .secret 等等
任何幫助將不勝感激。
編號:http://www.flickr.com/services/api/response.json.html
注意:所有的API密鑰用於測試,不久將被破壞。
非常感謝您!我刪除了回調=?現在我有這些對象並可以遍歷它們(data.photos.photo)。我認爲JSONP總是用於跨域Ajax?我仍然困惑爲什麼你想要回調=?在那裏,爲什麼不檢索所有數據並從那裏出發?再次感謝你! :) – Dal
如果服務器通過設置特殊標頭接受它,則可以執行跨域JSON(而不是JSONP)。請參閱https://developer.mozilla.org/en-US/docs/HTTP_access_control。對於現代瀏覽器和服務器,我認爲JSONP不再有什麼意義,但是這些頭文件有點「新」。 –