jQuery UI自动完成下拉菜单不显示

时间:2012-06-05 00:15:19

标签: javascript jquery jquery-ui jquery-ui-autocomplete spotify

我正在尝试使用jQuery UI自动完成功能来搜索spotify的音乐库。虽然一切顺利,但我确实得到了成功的答复:

jQuery Autocomplete Spotify Song Search

没有下拉建议。例如,我正在搜索“时间”,我想看看:

  • 时间作者:Hans Zimmer< - (这就是我要搜索的内容)
  • 返回Pitbull的时间
  • 提升大时间提示

等。这是我的JavaScript代码:

<script>$(function() {$( "#spotify_song_search" ).autocomplete({source: function(request, response) {
        $.get("http://ws.spotify.com/search/1/track.json", { q: request.term },function( data ) { alert(data); response(data);});
    },success: function(data) {
            // pass your data to the response callback 
            alert(data); response(data);
        }});});</script> 

我一定是做错了。我还在这里检查了jQuery文档:http://jqueryui.com/demos/autocomplete/但它没有给出任何解释为什么会发生这种情况。我添加了警报,看看我是否至少会得到一个响应,我这样做,但它只返回[object Object]。如何显示搜索结果?

第417行的

错误: Uncaught SyntaxError: Unexpected token ILLEGALenter image description here

1 个答案:

答案 0 :(得分:5)

自动完成小部件需要以非常特定的方式格式化数据,以便可以对其进行解析。您提供或传递给response回调的数组必须是:

  1. 包含字符串
  2. 的数组
  3. 包含标签属性,属性或两者兼有的对象的数组。
  4. (有关详细信息,请参阅“概述”/“预期数据格式”下的自动填充文档)

    当您拥有无法更改的数据源时,执行此操作的典型方法是使用$.map将结果转换为自动填充所需的格式:

    $("#spotify_song_search").autocomplete({
        source: function(request, response) {
            $.get("http://ws.spotify.com/search/1/track.json", {
                q: request.term
            }, function(data) {
                response($.map(data.tracks, function (el) {
                    return el.name;
                }));
            });
        }
    });
    

    示例: http://jsfiddle.net/ANmUs/(注意:目前这似乎不适用于Firefox;可能是由于响应的大小。但它在Chrome中工作正常)