0

ajax リクエストとオートコンプリート機能を組み合わせようとしています。しかし、オートコンプリートには何か問題があるようです。これを使用してコードを実装しています。

コンソールは私に次のようなものを返します:http://domain.com/[%22...array from ajax here]?term=What i put in my input 403エラーを指す -.-

私には単純に見えましたが、少し迷っています。

  <script type='text/javascript'>
      $("input[name=search]").on('keyup', function(){
         jQuery.ajax({
           type: 'POST', // Le type de ma requete
           <?php echo "url: '".PTC.ROOT.DS."ajax'"; ?>, // URL to call (works)
           data: {
             search: ''+$("input[name=search]").val()+''
           }, 
           success: function(data, textStatus, jqXHR) {

             window.availableNames = data; //JSON format
             $(function() {
              alert(window.availableNames); //Show the JSON encoded table with the right result.

              $("input[name=search]").autocomplete({source: window.availableNames}); // Fails.
             });
           },
           error: function(jqXHR, textStatus, errorThrown) {
           }
         });
      });
      </script>

ありがとうございました

編集: 個別に Ajax が機能し、オートコンプリートが機能します。しかし、2 番目を 1 番目に組み込もうとすると、うまくいきません。

4

1 に答える 1

1

オートコンプリートには、ソースパラメータとしてURLを提供するオプションがあります

文字列が使用される場合、オートコンプリートプラグインは、その文字列がJSONデータを返すURLリソースを指すことを期待します。同じホストまたは別のホストに配置できます(JSONPを提供する必要があります)。オートコンプリートプラグインは結果をフィルタリングしません。代わりに、リクエストパラメータ「term」がURLに追加されます。これは、サーバー側スクリプトが結果をフィルタリングするために使用する必要があります。データ自体は、上記のローカルデータと同じ形式にすることができます。

したがって、指定されたURLにあるAPIエンドポイントがjsonを返し、「term」パラメーターに正しく反応することを確認してください。

このようにして、独自のajax呼び出しをいじる必要はありません。

したがって、オートコンプリートコードは次のようになります。

$("input[name=search]").autocomplete({source: '<?php echo PTC.ROOT.DS."ajax"; ?>'});
于 2013-01-23T16:02:34.460 に答える