2012-05-31 99 views
1

我正在使用jQuery對flickr API進行ajax調用。

到目前爲止,我已成功調用了public photos API並顯示了結果。下面是我用了jQuery:如何使用jQuery處理JSONP回調?

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任何幫助,將不勝感激。

+1

'callbackForTopics =函數(){'應該是'callbackForTopics =函數(數據){' –

+0

由於喜悅。我做了改變。 –

回答

1

提取部分似乎是錯誤的。嘗試類似

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

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

1

的第一段代碼之間的區別:

callbackForImages = function(data){ 

其次一段代碼:

callbackForTopics = function(){ 

你錯過函數定義中的data參數。

此外,這是奇怪的:

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

不知道你的意思是什麼在那裏,但是這不會是肯定的工作。

順便說一句,這可以很容易地使用瀏覽器的開發工具(如螢火蟲)

+0

我沒有注意到缺少的參數,儘管這不能解決它。你突出顯示爲'怪異'的那一行是我遇到的麻煩。我只是把它放進去,以表明我試過的東西。從本質上講,我想要它做的是顯示ID =「結果」在div中返回的每個項目的標題。 –

0

我想通了,做什麼要歸功於傑克和SOFL提供的答案抓獲。我的回調方法應該是如下:

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