Jquery ajax函数返回数据

时间:2014-07-03 10:27:09

标签: javascript jquery ajax asynchronous jquery-callback

我已经阅读了大约20个关于这个具体问题的问题,但是无法让它们中的任何一个起作用。

我正在创建一个简单的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');

你能告诉我我做错了什么吗?

10倍

1 个答案:

答案 0 :(得分:1)

你做的AJAX调用是异步的;因此,您需要实现一个与itunesData()分开的回调函数来处理响应。