Ajax 在jquery ui自动完成中组合本地源和远程源

Ajax 在jquery ui自动完成中组合本地源和远程源,ajax,jquery-ui,autocomplete,jquery-autocomplete,jquery-ui-autocomplete,Ajax,Jquery Ui,Autocomplete,Jquery Autocomplete,Jquery Ui Autocomplete,我在javascript中包含了一个常用术语的本地列表,然后我还希望通过ajax响应从服务器获得json响应。怎样才能做到呢 var projects = ["apple", "orange"]; $('#search').autocomplete({ source: projects }); 然后附加来自ajax的结果?执行此操作的方法是将从服务器返回的结果与本地结果数组相结合。您可以通过将函数传递给autocomplete的源选项来完成此操作: 您必须执行三个步骤: 发出AJAX

我在javascript中包含了一个常用术语的本地列表,然后我还希望通过ajax响应从服务器获得json响应。怎样才能做到呢

var projects = ["apple", "orange"];

$('#search').autocomplete({
    source: projects
});

然后附加来自ajax的结果?

执行此操作的方法是将从服务器返回的结果与本地结果数组相结合。您可以通过将函数传递给autocomplete的
选项来完成此操作:

您必须执行三个步骤:

  • 发出AJAX请求并从服务器获取结果
  • 过滤本地数组
  • 结合结果
  • 这应该很简单。类似这样的方法会奏效:

    $("input").autocomplete({
        source: function(request, response) { 
            /* local results: */
            var localResults = $.ui.autocomplete.filter(localArray, request.term);
    
            /* Remote results: */
            $.ajax({
                /* AJAX options omitted... */
                success: function(data) {
                    /* Process remote data using $.map, if necessary, then concatenate local
                     * and remote results. 
                     */
                    response(data.concat(localResults));
                }
            });
        }
    }); 
    

    我在这里设计了一个完整的示例:

    换句话说,如果本地结果不存在,是否进行AJAX调用?或者您总是想进行AJAX调用吗?实际上,在任何情况下都要按顺序进行AJAX调用。换句话说,如果您有两个源,并且您没有在服务器端进行组合,那么有没有一种方法可以通过javascript组合来自这两个源的结果?是的,有。我想我有足够的信息发布一个答案如果你想显示本地结果,然后在远程结果可用时附加这些结果呢?我觉得很愚蠢。您只需使用新结果再次调用response()。