1

ユーザーがフィールドに都市名を入力し始めると、都市名と対応する ZIP (米国の郵便番号) を検索する jQuery オートコンプリート フィールドがあります。

MySQL データベースには、米国の郵便番号が約 44,000 行含まれています。すべての都市名と郵便番号を選択すると、クエリ自体はすばやく (0.0002 秒) 実行されます。

place_nameすべての結果 (SELECT 、postal_codeFROM postal_codesWHERE = 'US')を「事前キャッシュ」しcountry_codeて、オートコンプリート機能がユーザーにより速くロードされるようにする利点はありますか?

編集: JSON リスト全体は 600 KB で、ブラウザーに 2 ~ 3 秒で読み込まれます (Google Chrome コンソールによると)。

現在のコード:

<script type="text/javascript">
$(function() {

$('#from_country').change(function(){
  var val = this.value;
  $("#from_zip").autocomplete({
    source: "json-list-live-production.php?country=" + val,
    minLength: 4,
  });
}).change()


$('#del_country').change(function(){
  var val = this.value;
  $("#del_zip").autocomplete({
    source: "json-list-live-production.php?country=" + val,
    minLength: 4,
  });
}).change()


});
</script>

<input type="text" class="input_text" name="from_zip" id="from_zip"  />

<input type="text" name="del_zip" id="del_zip"  />
4

1 に答える 1

0

GeoNames.org Web サービス + jQuery Autocomplete を使用して郵便番号を検索するのが最速の方法のようです。

$( "#from_zip" ).autocomplete({
  source: function( request, response ) {
    $.ajax({
      url: "http://ws.geonames.org/postalCodeSearchJSON",
      dataType: "jsonp",
      data: {
        featureClass: "P",
        style: "full",
        maxRows: 50,
        placename_startsWith: request.term,
        country: "US"
      },
      success: function( data ) {
        response( $.map( data.postalCodes, function( item ) {
          return {
            label: item.placeName + (item.adminCode1 ? ", " + item.adminCode1 : "") + " (" + item.postalCode + ")",
            value: item.postalCode
          }
        }));
      }
    });
  },
  minLength: 2,
    messages: {
        noResults: null,
        results: function() {}
    },

});
于 2013-04-04T15:58:17.873 に答える