Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从iTunes搜索API回调返回值_Javascript_Jquery_Jquery Callback_Itunes Search Api - Fatal编程技术网

Javascript 从iTunes搜索API回调返回值

Javascript 从iTunes搜索API回调返回值,javascript,jquery,jquery-callback,itunes-search-api,Javascript,Jquery,Jquery Callback,Itunes Search Api,我在Stackoverflow上读过很多关于异步函数以及如何返回值的问题,但我无法将这些提示应用到我的项目中。所以我请求你的帮助 我正在使用iTunes搜索API在商店中查找歌曲,然后将它们添加到“播放列表”中。 该项目是在JQuery中开发的 基本上,有一个名为“iTunesSearch”的搜索框,我在其中写下歌曲的名称,然后有一个名为“search”的按钮,当单击该按钮时,它会执行在iTunes商店中检索歌曲的代码。 我想做的是将歌曲的名称放入数组中,将其显示在页面上的div中,然后搜索其他

我在Stackoverflow上读过很多关于异步函数以及如何返回值的问题,但我无法将这些提示应用到我的项目中。所以我请求你的帮助

我正在使用iTunes搜索API在商店中查找歌曲,然后将它们添加到“播放列表”中。 该项目是在JQuery中开发的

基本上,有一个名为“iTunesSearch”的搜索框,我在其中写下歌曲的名称,然后有一个名为“search”的按钮,当单击该按钮时,它会执行在iTunes商店中检索歌曲的代码。 我想做的是将歌曲的名称放入数组中,将其显示在页面上的div中,然后搜索其他歌曲,并反复重复这个过程。最后,我希望有一个数组,其中包含我搜索过的所有歌曲

代码如下:

$(document).ready(function() {
  $('#search').click(function(){
            var media = "music";  
            var limitOfSearchResults = 1;  
            var thing = document.getElementById('itunesSearch').value;
            var whatosearch = $('#itunesSearch').attr('value'); 

            $.getJSON("http://itunes.apple.com/search?term=" + thing   
                        + "&country=us&limit=" + limitOfSearchResults   
                        + "&media=" + media
                        + "&callback=?",function(data) {  

                songname = data["results"][0].trackName;
                resultPlaylist = createPlaylist(song);
                alert(resultPlaylist); //is always 1, it doesn't add songs when I repeat search

                });
          function createPlaylist(song){
           var playlist = new Array ();
           playlist.push(song);
           return playlist.length; //to test if the array stores the results

          )};
}))

这里是HTML正文片段:

<input id="itunesSearch" type="text" placeholder="Search for a song..">
<div id="resultiTunes"></div>
<input id="search" type= "button"  value="Find!">

如何将songname变量传递到回调之外,并使用它将歌曲的名称存储在数组或其他任何形式中? 我知道问题在于回调是在以后执行的。我尝试在回调函数中调用一个函数,但它不会在数组中堆叠歌曲(由于失败,我没有包含这段代码)。 有什么想法吗

提前感谢。

已解决。 我将getJSON请求放入一个函数并设置返回。然后,调用.done()状态以使用结果:

function foo(){ return $.getJSON("http://itunes.apple.com/search?media=music&term=2&country=it&limit=60&attribute=genreIndex&entity=song&callback=?",function(data) { 
                        //stub
                        }
                )}

foo().done(function(result){
//do something with result})