Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery autocomplete无法等待从服务器加载JSON_Jquery_Jquery Autocomplete - Fatal编程技术网

Jquery autocomplete无法等待从服务器加载JSON

Jquery autocomplete无法等待从服务器加载JSON,jquery,jquery-autocomplete,Jquery,Jquery Autocomplete,正如我在主题中提到的,服务器从调试日志加载大约需要200-1000毫秒,但我必须再按一个键才能显示结果。即使我使自动完成延迟更长,它仍然不能显示结果,我仍然必须按键 var timer; //to wait for x ms until some chars typed $("#keyword").bind("keyup", function(e) { if ($(this).val().length > 2) { window.clearTimeout(t

正如我在主题中提到的,服务器从调试日志加载大约需要200-1000毫秒,但我必须再按一个键才能显示结果。即使我使自动完成延迟更长,它仍然不能显示结果,我仍然必须按键

var timer;
//to wait for x ms until some chars typed
$("#keyword").bind("keyup", function(e) {
    if ($(this).val().length > 2)
    {
        window.clearTimeout(timer);
        timer = window.setTimeout(function(){               
            var datax = "";
            $(function () {
                $.getJSON("URI", ({"search":$("#keyword").val()}),function(datax){  
                    $("#keyword").autocomplete({
                        minLength: 3,
                        delay: 2000,
                        source: datax,
                        focus: function(event,ui){
                            $("#keyword").val( ui.item.nama);
                            return false;
                        },
                        select: function(event,ui){
                            $("#keyword").val( ui.item.nama);
                            $("#btnCariMainHeader").click();
                            return false;
                        }
                    })
                    .data("autocomplete")._renderItem = function(ul,item){
                            return $("<li>")
                            .data( "item.autocomplete",item)
                            .append("<a><table width='100%'><tr><td width='60px'>"+"<img height='60px' src='/thumb/" + item.value + ".jpg'/>"+"</td><td><b>"+item.nama+"</b><br><span class='suffix'>"+item.value+" "+item.bu+"</span><br><span class='suffix'>"+item.pos+"</span></td></tr></table></a>")
                            .appendTo(ul);
                    };
                });
            });
         },2000); 
    }
});

在您的代码中,您将在获得JSON结果后创建一个jQuery自动完成

但是请注意,jqueryautocomplete不需要编写所有这些复杂的代码。您可以直接使用JSON格式的远程数据源作为自动完成的输入。此外,没有必要绑定keyup事件来显示建议,这将由插件自动完成

$("#birds").autocomplete({
    source: "search.php", // This is the url that returns the JSON list
    minLength: 2,
    select: function(event, ui) {
        log(ui.item ? "Selected: " + ui.item.value + " aka " + ui.item.id : "Nothing selected, input was " + this.value);
    } });

您可以找到完整的。

您知道autocomplete小部件支持从服务器加载数据,可以使用标准JSON格式,也可以使用自定义回调函数,对吗?“你不必做这些傻事了。@谢谢你的解释,我刚开始学习这个强大的工具。谢谢你,先生。。。它非常简单,而且很有效。。。我刚刚开始学习这个强大的工具,因为长期以来我一直坚持使用传统的编码。