JQuery自动完成,解析JSON结果
不是编程新手,但是Javascript和JQuery新手 对于JQuery的autocomplete,我很难弄清楚从AJAX查询返回的JSON结果在哪里解析 以下是我目前掌握的情况:JQuery自动完成,解析JSON结果,jquery,ajax,json,Jquery,Ajax,Json,不是编程新手,但是Javascript和JQuery新手 对于JQuery的autocomplete,我很难弄清楚从AJAX查询返回的JSON结果在哪里解析 以下是我目前掌握的情况: $(document).ready(function () { function split( val ) { return val.split( /,\s*/ ); } function extractLast( term ) { return split( term ).p
$(document).ready(function () {
function split( val ) {
return val.split( /,\s*/ );
}
function extractLast( term ) {
return split( term ).pop();
}
$('#related').bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB && $(this).autocomplete( "instance" ).menu.active ) {
event.preventDefault();
}
}).autocomplete({
source: function( request, response ) {
$.getJSON( "/api/v1/indicator/", { specific: extractLast( request.term ) }, response);
}, search: function() {
var term = extractLast ( this.value ) ;
if ( term.length < 2) {
return false;
}
}, focus: function() {
return false;
}, select: function( event, ui ) {
var terms = split( this.value );
console.log(terms);
terms.pop();
terms.push( ui.item.value );
terms.push( "" ) ;
this.value = terms.join( ", " );
return false;
}
});
});
我想用从AJAX查询返回的结果填充“相关”输入
编辑1:
好的,下面是新的代码部分:
source: function( request, response ) {
$.getJSON( "/api/v1/indicator/", { specific: extractLast( request.term ) },
function(data) {
var indicatorItems = [];
$.each(data, function(k, v) {
$.each(v, function(i, indicator) {
indicatorItems.push(indicator['value']);
});
});
console.log(indicatorItems);
response(indicatorItems);
})
现在,它仍然没有显示在自动完成的UI中,并且我没有抛出任何错误。上面哪个函数(搜索、聚焦或选择)是“响应”变量传递和操作的位置?我正在查看AutoComplete的文档,但似乎无法正确获取它
编辑2:
好的,很明显它正在工作,但是它没有显示在正确的容器中。我可以看到结果是在“#相关”输入之外填充的(在后台)
编辑3:
开始工作了!需要改变CSS一点使用
.ui-autocomplete { z-index: 1050; }
好吧,这是有道理的!我添加了这一点,并且我能够将我正在寻找的JSON项传递到响应方法中,但是它仍然没有显示在自动完成中。我可以确认列表正在由quick console.log填充。请参阅编辑。尝试传递带有标签、值字段的对象以及调试器中html中发生的情况?添加了ul.ui-autocomplete?我试过了,仍然不起作用,是正确的。以下是我在调试器中看到的输入:
是的,但在主体中是否插入了ul,其中包含类ui autocomplete和任何li?
.ui-autocomplete { z-index: 1050; }
source: function( request, response ) {
$.getJSON( "/api/v1/indicator/",
{ specific: extractLast(request.term ) },
function(data){
var indicatorItems = [];
$.each(data, function(k, v) {
$.each(v, function(i, indicator) {
indicatorItems.push({
value: indicator['value'],
label: indicator['value']
}
});
});
response(indicatorItems);
});
},