2

テキストボックスに何を入力してもかまいません。常にリスト全体が表示されます。これが私のコードです:

$("#tb_country").autocomplete({
  source: function(request, response) {
    $.ajax({
      url: "/index.php/ajax_calls/select_countries",
      dataType: "json",
      data:  request,
      success: function(data) {
        response(data);
      }
    });
  },
  minLength: 3
});

select_countries関数は、オートコンプリートに適した形式でJSONデータを返します。つまり[ {"label": "United States"}、{"label":"Canada"}........] 誰かが間違っていることを教えてくださいこれで、ありがとう

4

2 に答える 2

5

ここで説明するように、サーバー側のコードで実際に応答をフィルタリングするようにしてください。

オートコンプリートプラグインは結果をフィルタリングしません。代わりに、サーバー側スクリプトが結果をフィルタリングするために使用する必要がある用語フィールドとともにクエリ文字列が追加されます。たとえば、ソースオプションが「http://example.com」に設定されていて、ユーザーがfooと入力した場合、GETリクエストはhttp://example.com?term=fooに対して行われます。

正しいリクエストを送信しますが(termパラメータはinput要素の現在の値で埋められます)、ほとんどの場合、サーバーコードでは使用しないでください。

于 2012-10-26T13:28:08.170 に答える
0

おそらく問題は、応答がコンテキストにないということですか?

response(data)を使用する代わりに、サーバーからデータをフェッチするonchangeを試して、次のようにソースを設定することもできます。

$("#tb_country").autocomplete( "option", "source", serverData );

また、問題がサーバーから返されたデータにあるのか、jqueryにあるのかわかりませんでした。問題がサーバーからのデータである場合は、リクエストで何が送信されているかを確認する必要があります。

編集:データはすでに一度入力されているため、サーバーの問題である必要があります。リクエストヘッダーやサーバー機能を投稿していただけますか?

于 2012-10-26T13:31:16.783 に答える