-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