我正在尝试为jquery自定义一个自动完成插件。这应该非常简单。
应该从autocomplete.php中提取名称列表,然后发送到“lookup”。当我手动输入它时,它工作,但当我尝试使用函数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);
});
autocomplete.php
<?
header("Content-Type: application/json", true);
$info = array("name1","name2");
echo json_encode($info);
?>
答案 0 :(得分:1)
您先获取名称并等待ajax响应。当它到达时,你必须开始自动完成。
E.g。 (另):
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();
}
答案 1 :(得分:-1)
试试这个:
function getnames() {
var myData;
$.ajax({
type:'POST',
dataType:'json',
data:{ },
url:'autocomplete.php',
timeout:1000,
success:function (data) {
myData = data;
}
});
return myData;
}