我使用php从mysql数据库中获取数据,然后在jquery ui自动完成中使用这些数据。但返回的JSON似乎与jqueryui所需的不匹配。返回的JSON如下所示:
["dyes miran famint","annie ferrer mendrez","annie ferrer mendrez","anton setra masgre","anton setra masgre","jeniffer hades cruz","jeniffer hades cruz","alvin louie urbano maranon","alvin louie urbano maranon","francisza jerrielleza bullonza","blaze br tags anchor"]
我甚至在上面使用了jQuery.parseJSON。
以下是我对php文件所做的操作:
$class_code = $_POST['class_code'];
$student_list = array();
$students = mysql_query("SELECT accounts.id, fname, mname, lname, classcode
FROM account_details
LEFT JOIN accounts ON account_details.id = accounts.id
LEFT JOIN class_rooster ON accounts.id = class_rooster.id
WHERE accounts.status = 1 AND accounts.type='student'
AND (class_rooster.id IS NULL OR classcode !='$class_code')");
$students_num = mysql_num_rows($students);
if($students_num > 0){
while($row = mysql_fetch_assoc($students)){
$student_list[] = $row['fname'] . ' ' . $row['mname'] . ' ' . $row['lname'];
}
echo json_encode($student_list);
这是我得到的错误:
Uncaught TypeError: Property 'source' of object #<Object> is not a function
这是JavaScript:
function get_students(){
var class_code = $('#current_classes').val();
$.post('student_list.php', {'class_code' : class_code},
function(data){
return data;
}
);
}
$("#student_name").live('click', function(){
$("#student_name").autocomplete({
source: get_students()
});
});
查看文档中关于如何使用回调源类型的Overview部分。传递给函数的第二个参数是要使用的响应回调。您的get_students()
函数应该如下所示:
function get_students(current_val,callback){
var class_code = $('#current_classes').val();
$.post('student_list.php', {'class_code' : class_code},
function(data){
callback(data);
}
);
}
看看文档,它正在寻找这样的东西:
$(function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"Scheme"
];
$( "#tags" ).autocomplete({
source: availableTags
});
});
我的猜测是你在做$().autocomplete(json_obj)
而不是$().autocomplete({source: json_obj})
。
我认为您没有在autcomplete插件代码中使用源实体。检查您的自动完成代码
$("#inputbox").autocomplete({ source: data });
我相信你可以使用没有源实体的数据
还要检查您的php输出数组