-1
我已經閱讀了關於這個特定問題的20個問題,但無法讓他們工作。jquery ajax函數返回數據
我正在創建一個簡單的jquery函數來查詢iTunes API來獲取歌曲數據。
我似乎無法獲得超出ajax函數的數據。我試着回調和異步假,但似乎沒有工作。
這裏是我的代碼:
function itunesData(artist,song) {
/* https://itunes.apple.com/search?term=jack+johnson+I+Got+You&entity=song */
$.ajax({
type: 'GET',
url: 'https://itunes.apple.com/search',
data: { term: artist+' '+song, entity: 'song' },
dataType: 'jsonp',
cache: true,
statusCode: {
404: function() {
alert('are you online?')
},
},
success: function(resp) {
if (resp.resultCount == 0) {
return false;
}
if (resp.results[0]) {
songDetails = resp.results[0];
songArt = songDetails.artworkUrl30;
songPreview = songDetails.previewUrl;
songUrl = songDetails.trackViewUrl;
return itunesData = new Array(songArt, songPreview, songUrl);
}
},
});
}
最後我只需要:
var songData = itunesData('Jack Johnson', 'I Got You');
你能告訴我什麼我做錯了嗎?
10x
簡短回答:您不會從回調中返回*(在本例中爲'success'處理程序),返回不會在任何地方執行。您*修改回調中的狀態*。因此,不要將數據返回,而要將數據設置到需要的地方。 (一個共享範圍變量,頁面元素等) – David
該死的,我想念php ... –
AJAX和PHP一樣工作。雖然我不知道PHP是否具有服務器端異步功能的機制,但結構仍然非常相似。異步回調與主線程不在同一個調用堆棧上,所以沒有任何等待返回值。 – David