jqueryui使用ajax响应自动完成

时间:2012-08-02 17:33:33

标签: php ajax autocomplete

我正在尝试在ajax中获得对JqueryUi自动完成的响应,但我无法在下拉框中获得结果。这是script =>

$(function(){
    $("#user_key" ).autocomplete({
        source: function(){
            var http = false;
            if (window.XMLHttpRequest){
                http = new XMLHttpRequest();
            } else {
                http = new ActiveXObject("Microsoft.XMLHTTP");
            }
            if (http){
                http.open("POST","./ajax/autocomplete.php",true);
                http.onreadystatechange = function(){
                    if (http.status==200 && http.readyState==4){
                        this.value = http.responseText;
                    }
                };
                http.send(null);
            }
        },
        close: function(){

        }
    });
});
为了简化autocomplete.php中的示例,

仅写为<?php echo "hello"; ?> 如何在下拉框中显示“hello”以及为什么需要在脚本底部使用 close:功能,谢谢:)

PS。我认为在编写 this.value = http.responseText 时我犯了错误,例如编写alert(http.responseText)时会得到.php文件的结果。如何指示结果写在下拉框中?

1 个答案:

答案 0 :(得分:2)

根据我完成的文档和一些测试,您只需要使用php脚本的url设置source属性。

jQuery UI代码将查询字符串中的term参数发送到您在其中指定的网址:source.php?term=hello

因此,在您的示例中,假设您在PHP脚本中正确处理了querystring参数,则应该可以使用以下内容,该脚本应返回JSON数组。

$(function(){
    $("#user_key" ).autocomplete({
        source: "./ajax/autocomplete.php",
        minLength: 2
    });
});

返回的JSON数据应采用以下格式:

[{ "id" : "Item1", "label" : "Item1", "value" : "Item1" }, 
{ "id": "Item2", "label" : "Item2", "value" : "Item2" }]