我正在使用这个jquery插件:JQuery Autocomplete。问题我正在获取json数据,但它没有出现在自动完成列表中。
JQuery
代码:
$( "#student-id" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "ajax/ajax_admin.php?auto_student=" + $( "#student-id" ).val(),
dataType:"json",
data: {
featureClass: "P",
style: "full",
maxRows: 12,
name_startsWith: request.term
},
success: function( data ) {
response( $.map( data.students, function( item ) {
return {
label: item.id +" , "+ item.name,
value: item.id
}
}));
}
});
},
minLength: 2,
open: function() {
$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
},
close: function() {
$( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
}
});
PHP Script
是:
public function load_ajax_student_list($val)
{
$val = "%".$val."%";
$stmt = $this->conn->prepare("select * from student where studentAiubId like :value limit 0,5");
$stmt->bindValue(':value', $val);
$stmt->execute();
if($stmt->rowCount() < 1)
echo "";
else
{
$result = $stmt->fetchAll();
$output = array();
foreach($result as $row)
{
if($row['mname']=="")
$name = $row['fname']." ".$row['lname'];
else
$name = $row['fname']." ".$row['mname']." ".$row['lname'];
$data["name"] = $name;
$data["id"] = $row['studentAiubId'];
$output["students"][] = $data;
}
echo json_encode($output);
}
}
如果来电如下:ajax/ajax_admin.php?auto_student=10
来自PHP script
的生成数据为:
{
"students": [
{"name":"Moh Mamun Sardar","id":"10-15987-1"},
{"name":"Rehan Ahmed","id":"10-12451-2"},
{"name":"Abid Hassan","id":"10-15412-1"},
{"name":"Abir Islam","id":"10-11245-1"}
]
}
但自动完成时没有显示任何内容。我做错了什么?
答案 0 :(得分:3)
尝试这样的事情
$.map( data.students, function(item ) {
return {
label: item.name,
value: item.id
});
是minlength
而不是minLength
看到大写
答案 1 :(得分:0)
你已经忘记了&#34; appendTo&#34;属性。在这种情况下,您必须指定希望信息附加到的元素的选择器,如此
appendTo: '.class' or appendTo: '#id'
你必须将此属性添加到自动完成的初始化中作为源等的兄弟......