0

データベースでjquerysオートコンプリートを使用しようとしていますが、オートコンプリートのオプションとしてphpスクリプトからデータを返す方法がわかりません。

別のフォーラム投稿に基づいて、現時点で私が持っているものは次のとおりです。

$('input#transferto').autocomplete({
                source: function(request, response)
                {
                    alert('{"term": "'+request.term+'", "mode": "ENTITY_AUTOCOMPLETE"}');
                    $.ajax({
                        url: SYSTEM_ROOT+'/assets/controllers/global.php',
                        data: 'dataString={"term": "'+request.term+'", "mode": "ENTITY_AUTOCOMPLETE"}',
                        success: function(data)
                        {
                            //alert(data);
                            //data = $.parseJSON(data) ;
                            response($.map(data, function(item) {
                                return{
                                    label: item.user_login_name,
                                    value: item.user_id
                                }
                            }))
                        }
                    })
                },
                minLength: 3,
                datatype: 'json',
                cache: false,
                delay: 500,

そして私のphpファイルで:

if($mode == 'ENTITY_AUTOCOMPLETE')
{
    $query = trim(strip_tags($JSON->term));
    $q = $query.'%' ;
    $result = $dbh->prepare("SELECT id, name FROM entity_details WHERE name LIKE ?") ;
    $result->execute(array($q)) ;

    //$data = '{' ;
    //while($row = $result->fetch(PDO::FETCH_ASSOC)) {
        //foreach($row as $key => $val)
            //$data .= '"'.$key.'": "'.rawurldecode($val).'", ' ;
    //}
    //$data = substr($data, 0, strlen($data)-2).'}' ;
    $data = $result->fetchAll(PDO::FETCH_ASSOC) ;
    echo print_r($data) ;
}

ご覧のとおり、配列だけを返して JSON を試してみましたが、役に立ちませんでした。

どうすれば機能しますか?

4

1 に答える 1

0

ドキュメントを読みましたか?http://api.jquery.com/jQuery.ajax/

url: SYSTEM_ROOT+'/assets/controllers/global.php',

1) SYSTEM_ROOT ルートとは? これはどこにも定義されていません。

data: 'dataString={"term": "'+request.term+'", "mode": "ENTITY_AUTOCOMPLETE"}',

2) データ文字列を渡す方法は不要です。jquery ドキュメントで指定されているように、これはクエリ文字列に変換されますが、まだ文字列になっていない場合は、GET 要求の URL に追加されます。オブジェクトを使用する場合は、キーと値のペアである必要があります。一方、クエリ文字列内のオブジェクトを文字列として詰め込もうとしています。

if($mode == 'ENTITY_AUTOCOMPLETE')

3) この行$modeでは、定義/宣言されていないアクセスが行われています。通常はGETリクエストで確認し$_GET['mode']ますが、あなたの場合、渡すデータを台無しにしているため、そこにはありません(2で言及)

NET パネルを開き、コンソールでエラーを確認してデバッグします。

于 2012-11-05T16:39:33.963 に答える