我正在尝试使用jQuery UI自动完成功能来搜索spotify的音乐库。虽然一切顺利,但我确实得到了成功的答复:
没有下拉建议。例如,我正在搜索“时间”,我想看看:
等。这是我的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]
。如何显示搜索结果?
错误: Uncaught SyntaxError: Unexpected token ILLEGAL
:
答案 0 :(得分:5)
自动完成小部件需要以非常特定的方式格式化数据,以便可以对其进行解析。您提供或传递给response
回调的数组必须是:
(有关详细信息,请参阅“概述”/“预期数据格式”下的自动填充文档)
当您拥有无法更改的数据源时,执行此操作的典型方法是使用$.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中工作正常)