2011-04-17 75 views
3

嘿,我正在做AJAX調用「flickr.interestingness.getList」來獲取有趣的圖片,這是我的AJAX調用。可以以某種方式更改回調函數名稱?

function getPhoto() 
{ 
$.ajax("http://api.flickr.com/services/rest/?method=flickr.interestingness.getList&format=json&api_key=fbfe07eb3cc28814df5bbc0313cdd521", 
     { 
     dataType: "jsonp", 
     //jsonp: false, jsonFlickrApi: "jsonpcallback", 
     jsonpCallback: "jsonFlickrApi", 
     }); 
} 

function jsonFlickrApi(data) 
{ 
alert(data.photos.photo); 
} 

和這裏「JsonFlickrApi」是來自Flickr預先定義的功能,它包裝,其具有一串照片JSON對象。我的問題是我可以以某種方式覆蓋預定義的函數,「jsonFlickApi」並命名除「jsonFlickrApi」之外的回調函數,我認爲在閱讀jQuery文檔之後jsonp參數應該這樣做,但只是未能更改它.or我不太明白jsonp參數在jQuery AJAX調用中的作用。謝謝

+0

我想知道你爲什麼要更換呢? – wong2 2011-04-17 15:04:02

回答

6

你就近了。這完美的作品:

function getPhoto() { 
    $.ajax({ 
     url: "http://api.flickr.com/services/rest/?method=flickr.interestingness.getList&format=json&api_key=fbfe07eb3cc28814df5bbc0313cdd521", 
     dataType: "jsonp", 
     jsonp: 'jsoncallback', 
     success: function(data) { 
      alert(data); 
     } 
    }); 
} 

getPhoto(); 

DEMO

隨着documentation describes,您可以用jsoncallback參數設置自己的回調名稱。因此我們必須設置jsonp: 'jsoncallback'。在jQuery documentation中,你可以發現建議讓jQuery選擇一個回調名稱。只需設置success回調,就完成了。

+0

是啊,我想我不明白的是,既然我可以設置自己的回撥名稱,我應該命名它,無論我想要什麼。對?我試過像這樣做jsonp:'jsonpcallback',但它會拋出一個錯誤,說jsonFlickrApi沒有定義。怎麼會這樣?謝謝 – 2011-04-17 15:35:01

+0

@ClinteneyHui:我不知道你在做什麼。上面的代碼工作。是的,你可以隨心所欲地命名它,但你不需要。爲什麼不讓jQuery處理它? – 2011-04-17 15:39:43

+0

我明白了。誤解了一點點。 Thanx – 2011-04-17 15:44:41

2

Flickr API docs

如果你只是想生JSON,沒有 功能的包裝,與1至 您請求的值添加參數 nojsoncallback。

要定義您自己的回調函數 名稱,請添加參數jsoncallback 並將所需名稱作爲值。

nojsoncallback=1 -> {...} 
jsoncallback=wooYay -> wooYay({...}); 

例子:

http://api.flickr.com/services/rest/?method=flickr.interestingness.getList&format=json&api_key=fbfe07eb3cc28814df5bbc0313cdd521&jsoncallback=myCallbackFun 

返回:

myCallbackFun({"photos":{"page":1, "pages":5, "perpage":100, "total":500, "photo":[{"id":"5623656271", "owner":"[email protected]", "secret":"b67514798d", "server":"5143", "farm":6, "title":"Defying Gravity!!!", "ispublic":1, "isfriend":0, "isfamily":0}, {"id":"5624056667", "owner":"[email protected]", "secret":"57ffca018d", "server":"5301", "farm":6, "title":"Navy Officers: Pearl Harbor", "i... 
相關問題