如何使用jQuery处理JSONP回调?

时间:2012-05-31 09:26:31

标签: jquery api jsonp flickr

我正在使用jQuery对flickr API进行ajax调用
到目前为止,我已成功调用public photos API并显示结果。这是我使用的jQuery:

getPics = function(){
    $.ajax({
        url: 'http://api.flickr.com/services/feeds/photos_public.gne?format=json&jsoncallback=callbackForImages',
        dataType: 'jsonp'
    });
}
callbackForImages = function(data){
    clearResults();
    $.each(data.items, function(i, item) {
        $("<img/>").attr("src", item.media.m).appendTo("#results");
    });
}

但是当我尝试使用forums API时,我不知道如何格式化回调函数。

这是我到目前为止所拥有的。

getTopics = function(){
    $.ajax({
        url: 'http://api.flickr.com/services/feeds/forums.gne?format=json&jsoncallback=callbackForTopics',
        dataType: 'jsonp'
    });
}

callbackForTopics = function(data){
    clearResults();
    //this is the bit that's broken
    $.each(data.items, function()) {
        $("title").value.appendTo("#results");
    }
}

clearResults = function(){
    $("#results").html('<div id="results"></div>');
}

理解如何使用返回的JSONP的任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

获取部分似乎错了。尝试像

这样的东西
$.each(data.items, function(idx,val) {
   $("#results").append($('<div></div>').text(val.title));
});

示例:http://jsfiddle.net/Y9Jj3/2/

答案 1 :(得分:1)

第一段代码之间的区别:

callbackForImages = function(data){

第二段代码:

callbackForTopics = function(){

您在功能定义中缺少data参数。

另外,这很奇怪:

$("title").value.appendTo("#results");

不确定你的意思,但这肯定不起作用。

顺便说一句,使用浏览器开发人员工具(例如Firebug)可以很容易地捕获它

答案 2 :(得分:0)

由于Jack和Sofl提供的答案,我想出了该怎么做。我的回调方法应该如下:

callbackForTopics = function(data){
    clearResults();
    $.each(data.items, function(i, item) {
        $("#results").append($('<div></div>').text(item.title));
    });
}