1

我正在尝试为 jquery 自定义一个自动完成插件。这应该非常简单。

它应该从 autocomplete.php 中提取名称列表,然后发送到“查找”。当我手动输入它时它可以工作,但是当我尝试使用函数 getnames() 获取名称时它不起作用。我是否正确返回数据?php 文件也可以。

var options, a;

function getnames() {
    $.ajax({
        type:'POST',
        dataType:'json',
        data:{ },
        url:'autocomplete.php',
        timeout:1000,
        success:function (data) {
            return data;
        }
    });
}

// Doesn't work:

// DOC READY
$("#members").one("click", function () {
    options = { 
        lookup:getnames() 
    };
    a = $('#members').autocomplete(options);
});

// Works:

// DOC READY
$("#members").one("click", function () {
    options = { 
        lookup:["name1","name2"]
    };
    a = $('#members').autocomplete(options);
});

自动完成.php

<?
header("Content-Type: application/json", true);
$info = array("name1","name2");
echo json_encode($info);
?>
4

2 回答 2

1

您首先获得了名称并等待 ajax 响应。当它到达时,您必须启动自动完成。

例如(未经测试):

function getnames() {
    $.ajax({
        type:'POST',
        dataType:'json',
        data:{ },
        url:'autocomplete.php',
        timeout:1000,
        success:function (data) {
            options = { 
                lookup:data
            };
            a = $('#members').autocomplete(options);
        }
    });
}

$("#members").one("click", function () {
    getnames();
}
于 2012-06-03T13:24:49.297 回答
-1

试试这个:

 function getnames() {
        var myData;
        $.ajax({
            type:'POST',
            dataType:'json',
            data:{ },
            url:'autocomplete.php',
            timeout:1000,
            success:function (data) {
              myData = data;
            }
        });
        return myData;
    }
于 2012-06-03T13:16:41.937 回答