【发布时间】:2011-02-02 00:33:05
【问题描述】:
我对 JQuery 还很陌生,可能正在尝试实现对初学者来说可能有点困难的东西。但是我正在尝试创建一个自动完成功能,将当前值发送到 PHP 脚本,然后返回必要的值。
这是我的 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"}]
谁能告诉我哪里出错了?开始变得非常沮丧。输入框只是变成“白色”并且没有显示任何选项。如果我指定一个值数组,代码确实有效。
更新 我已将代码更改为,但仍然没有运气。
$("#login_name").autocomplete({
source: "/ajax/login_name.php",
dataType: "json",
minLength: 2,
cache: false,
select: function(event, ui) {
alert(ui);
}
});
使用 FireFox 的 Web Developer 工具时,我收到一个错误“b is null”。
【问题讨论】:
-
刚刚想到; “myscript.php”是否需要发送一个“JSON 标头”(如果存在)...
-
看来参数没有通过 ?q= 传递,如记录的那样???
-
现在我删除了 (isset($_GET['q'])) 我在使用 $("#login_name").autocomplete({ source : "/ajax/login_name.php", dataType: "json", minLength: 2, cache: false, formatItem: function(data) { return data.user_login_name; }, formatResult: function(data) { return data.user_id; } });
标签: php jquery json user-interface autocomplete