我正在尝试使用solr和jquery进行自我暗示。为此我写了下面的代码:
$(function(){
$( "#artist" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: 'http://localhost:8983/solr/terms?terms.fl=heading&terms.prefix='
+request.term+'&wt=json&json.nl=map',
dataType: "jsonp",
data: {
q: request.term,
rows: 10,
omitHeader: true,
},
success: function( data ) {
response( $.map( data.terms.heading, function( item ) {
return {
label: item,
value: item
}
}
)
);
}
});
},
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
},
open: function() {
$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
},
close: function() {
$( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
}
});
});
我在Chrome中运行时出现以下错误
Uncaught SyntaxError:意外的令牌: 我得到的Json数据是这个
{ “术语”:{ “标题”:{ “答案”:24, “安萨里”:5}}}
我查阅了以下链接http://jqueryui.com/demos/autocomplete/#remote-jsonp,但我无法找到解决方案。请说明我做错了什么
答案 0 :(得分:3)
您(正确?)指定JSONP来访问Cross Origin资源,但您没有告诉Solr您希望它发出JSONP而不是纯JSON。
将jsonp: 'json.wrf'
添加到参数$.ajax
。