2012-03-14 18 views
0

私はmysqlデータベースからデータを取得するためにPHPを使用しています。そして、そのデータをjquery UIオートコンプリートで使用しています。しかし、返されるJSONがjqueryが必要とするものと一致しないようです。 JSONが返され、このようなものになります。私もそれにjQuery.parseJSONを使用jquery ui autocompleteとphp json string

["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"] 

を。ここ

そして、私は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() 
     }); 
    }); 
+0

私は誤解されるかもしれないが、私はそれがidと値のプロパティを持つオブジェクトの配列、文字列を持つだけではなく、配列を期待だと思います。 – slash197

+1

@pinkypower - 文字列の配列は、ドキュメントに従って動作します。http://jqueryui.com/demos/autocomplete/#remote PHPが生成したJSONがきれいに表示されます。問題はJavascriptのどこかにある可能性が高いです。それを投稿できますか? – zim2411

+0

うん、あなたはそうだよ、自分でチェックしただけだ。 – slash197

答えて

1

に私はあなたがソースエンティティせずにデータを使用することができます信じているあなたの自動車の完全なコード

$("#inputbox").autocomplete({ source: data }); 

をチェックし、コールバック・ソースを使用する方法についてdocumentationの概要のセクションをご覧くださいタイプ。関数に渡される2番目の引数は、使用される応答コールバックです。あなたの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); 
      } 
     ); 
} 
0

を取りますdocumentationを見ると、次のようなものがあります:

$(function() { 
    var availableTags = [ 
     "ActionScript", 
     "AppleScript", 
     "Asp", 
     "Scheme" 
    ]; 
    $("#tags").autocomplete({ 
     source: availableTags 
    }); 
}); 

$().autocomplete({source: json_obj})の代わりに$().autocomplete(json_obj)をやっていると思います。

+0

の私の編集を参照してください。 –

+0

あなたのコードに基づいて新しい回答を追加しました。 – jasonlfunk

0

autcompeleteプラグインコードでソースエンティティを使用していないと思います。また、PHPの出力配列を確認し