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

时间:2012-12-26 16:55:30

标签: ajax jquery-ui autocomplete jquery-autocomplete jquery-ui-autocomplete

我在javascript中包含了常用术语列表,然后我还希望通过ajax响应从服务器获取json响应。怎么办呢?

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

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

然后追加ajax的结果?

1 个答案:

答案 0 :(得分:6)

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

您必须执行三个步骤:

  1. 发出AJAX请求并从服务器获取结果。
  2. 过滤本地数组
  3. 合并结果
  4. 这应该很简单。像这样的东西会起作用:

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

    我在这里做了一个完整的例子:http://jsfiddle.net/FZ4N4/