嘿,我正在用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”之外的其他东西,我认为jsonp参数应该在我阅读jQuery文档但未能更改它之后执行此操作。或者我不太明白jsonp参数在jQuery AJAX调用中的作用。谢谢
答案 0 :(得分: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();
作为documentation describes,您可以使用jsoncallback
参数设置自己的回调名称。因此,我们必须设置jsonp: 'jsoncallback'
。在jQuery documentation中,您可以发现建议让jQuery选择一个回调名称。只需设置success
回调,即可完成。
答案 1 :(得分:2)
如果你只想要原始的JSON,没有 函数包装器,添加参数 nojsoncallback,值为1到 你的要求。
定义自己的回调函数 name,添加参数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":"50725098@N08", "secret":"b67514798d", "server":"5143", "farm":6, "title":"Defying Gravity!!!", "ispublic":1, "isfriend":0, "isfamily":0}, {"id":"5624056667", "owner":"51832166@N03", "secret":"57ffca018d", "server":"5301", "farm":6, "title":"Navy Officers: Pearl Harbor", "i...