我相當新的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