jquery-ui自动完成和php-json字符串


jquery ui autocomplete and php json string

我使用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输出数组