0

私はこのコードを書きました。ユーザーが郵便番号または都市名を入力すると、クエリのようなものを使用してデータベースから取得します。問題は、都市と郵便番号の 2 つのフィールドを持つ約 1260 のレコードがあることです。

        SELECT code, area FROM post_codes WHERE code LIKE '$q%' or area LIKE '$q%'  ORDER BY area LIMIT 4

ユーザーが投稿した多くの質問を読み、オンラインでも調査しましたが、クエリ遅延を使用しても何も機能しません.データベース内のこれらのフィールドの両方にインデックスを付けました..レコードの取得が遅すぎます。これが最初の問題です。2番目の問題はユーザーが検索のためにそのテキストフィールドにいて、タブを押すと、検索をバイパスして無効なコードを書くことができます。これは、参照用の私のコードです。

      $("#Postcode").autocomplete("get_codes2.php", {


        width: 260,
 queryDelay:0, 

   dataType: 'json',
   parse: function(data) {
            var array = new Array();
            for(var i=0;i<data.length;i++)
            {

            array[array.length] = { data: data[i], value: data[i].areacode, result: data[i].areacode};

            }
            return array;
    }, 

    formatItem: function(row) {                     





    return row.areacode;
    }






}).result(function (){
4

1 に答える 1

1

Drupal の API 検索には、この問題を解決するための非常に優れたアプローチがあると思います。すべての増分検索をバックエンドにヒットさせる代わりに、クライアント側でオートコンプリートに使用される1 つの大きなJSON ファイルを提供することです。

彼らの実装では、検索入力のフォーカス イベントをリッスンして、実際に必要な場合にのみ JSON を取得しています。

于 2012-07-02T11:28:57.863 に答える