我相当新的JQuery,也许试图实现一些初学者可能会更难的东西。不过,我正尝试创建一个自动完成功能,将当前值发送给PHP脚本,然后返回必要的值。jquery ui自动完成与数据库
这里是我的Javascript代码
$("#login_name").autocomplete({
source: function(request, response) {
$.ajax({
url: "http://www.myhost.com/myscript.php",
dataType: "jsonp",
success: function(data) {
alert(data);
response($.map(data, function(item) {
return {
label: item.user_login_name,
value: item.user_id
}
}))
}
})
},
minLength: 2
});
这里是 “myscript.php”
while($row = $Database->fetch(MYSQLI_ASSOC))
{
foreach($row as $column=>$val)
{
$results[$i][$column] = $val;
}
$i++;
}
print json_encode($results);
将会产生以下输出
[{"user_id":"2","user_login_name":"Name1"},{"user_id":"3","user_login_name":"Name2"},{"user_id":"4","user_login_name":"Name3"},{"user_id":"5","user_login_name":"Name4"},{"user_id":"6","user_login_name":"Name5"},{"user_id":"7","user_login_name":"Name6"}]
能
人的后半段请告诉我哪里错了?开始变得非常沮丧。输入框只是变成“白色”,没有显示任何选项。如果我指定一个值的数组,该代码会工作。
UPDATE 我改变了代码,仍然没有运气。
$("#login_name").autocomplete({
source: "/ajax/login_name.php",
dataType: "json",
minLength: 2,
cache: false,
select: function(event, ui) {
alert(ui);
}
});
使用FireFox的Web开发工具,我收到一个错误“b is null”。
只是有一个想法; “myscript.php”需要发送一个“JSON头”(如果存在这样的东西)... – bigstylee 2010-03-29 12:26:23
它似乎没有得到通过?q =的传递参数? – bigstylee 2010-03-29 13:33:33
现在我已经删除了(isset($ _ GET ['q']))当我使用 $(“#login_name”)时,自动完成了“undefined”选项的自动完成。{//ajax /login_name.php”, 数据类型: “JSON”, 的minLength:2, 缓存:假, formatItem:功能(数据){ \t返回data.user_login_name; }, formatResult:功能(数据){ \t return data.user_id; } }); – bigstylee 2010-03-29 13:36:26