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... 
相关问题