1

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

$(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"; ?> 了如何在下拉框中获取此“你好”以及为什么需要在脚本底部使用close:函数,谢谢 :)

PS。我认为我在编写this.value = http.responseText时出错了,例如在编写 alert(http.responseText) 时,它会从 .php 文件中获取结果。如何指示结果写在下拉框中?

4

1 回答 1

2

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

jQuery UI 代码将term查询字符串中的参数发送到您在此处指定的 url: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" }]
于 2012-08-02T18:09:26.227 回答