0

enterPerson() を使用して入力タグの html を動的に追加し、onkeyup=changeOnType(this) を呼び出して、autoInvit.php で $results をエコーするとオートコンプリートが表示されるはずですが、オートコンプリート コードが機能しないのはなぜですか。 . 誰でも私を助けてもらえますか?前もって感謝します :)

jquery と autocomplete のヘッダー ファイル:

<link rel="stylesheet" href="//code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />  
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script src="//code.jquery.com/jquery-1.8.3.js"></script>
<script src="//code.jquery.com/ui/1.10.0/jquery-ui.js"></script>

「main.php」のオートコンプリート:

<script>    
function changeOnType(x){

    $.post(
    "autoInvit.php",
    {
         vals: $(x).val()
    },
    function(data){

    $("#"+x.id).autocomplete( {source:"autoInvit.php" }  );

    //alert(data);  
    }
    );

}
</script>

「invities.php」の動的 html の php コードは次のとおりです。

<?php 

echo '<input class="e" type="email" id="email"  onkeyup="changeOnType(this)"  autocomplete="on" role="textbox" aria-autocomplete="list" aria-haspopup="true"  />';
?>

結果をエコーするphpファイル「autoInvit.php」は次のとおりです。

 <?php

    include("includes/connection.php"); 

    $value = strip_tags($_POST['vals']);

    $req = "SELECT email as name "
        ."FROM members "
        ."WHERE email LIKE '".$value."%' "; 


    $query = mysql_query($req);

    while($row = mysql_fetch_array($query))
    {
        $results[] = $row['name'];
    }


    echo json_encode($results);

    ?>

助けてください

4

1 に答える 1

0

postリクエストを行う必要はありません。編集: 別の関数を呼び出したり、入力にリスナーをアタッチしたりする必要はありません。オートコンプリート プラグインを登録するだけです。これは、DOM の準備ができたら呼び出す必要があるため、ready 関数でラップする必要があります。これは、必要なすべての JavaScript である必要があります。

$(function() {
    $("#"+x.id).autocomplete( {source:"autoInvit.php" }  );
});

ユーザーが入力した内容は、リクエストとともにパラメータとして渡されますterm

autocompleteのjQueryドキュメントから:

文字列: 文字列が使用される場合、オートコンプリート プラグインは、その文字列が JSON データを返す URL リソースを指していると想定します。同じホスト上または別のホスト上にある可能性があります (JSONP を提供する必要があります)。オートコンプリート プラグインは結果をフィルター処理しません。代わりに、サーバー側スクリプトが結果をフィルター処理するために使用する用語フィールドを含むクエリ文字列が追加されます。たとえば、ソース オプションが " http://example.com " に設定され、ユーザーが foo と入力した場合、GET 要求はhttp://example.com?term=fooに対して行われます。データ自体は、上記のローカル データと同じ形式にすることができます。

また、コンテンツをユーザーから DB に直接渡す場合も注意が必要です。SQL インジェクションに心を開くことができます。

于 2013-04-17T18:39:45.647 に答える