JQuery自动完成,解析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

不是编程新手,但是Javascript和JQuery新手

对于JQuery的autocomplete,我很难弄清楚从AJAX查询返回的JSON结果在哪里解析

以下是我目前掌握的情况:

$(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);  

                 });
    },