jquery-ui-autocomplete (実際には、検索ボックスに接続されたcatcomplete ) を使用しています。静的に定義されたアイテムの配列をソースとして使用する限り、うまく機能します。
パフォーマンス上の理由から、オートコンプリートで PHP スクリプトに Ajax リクエストを送信して、%like% リクエストを MySQL に送信することは望ましくありません。そこで、DB から JSON ファイルを生成しました。これには、検索で一致するすべてのアイテム (多くの SQL テーブルからの約 20 ~ 30 アイテム) が含まれています。ページが読み込まれたとき、またはユーザーが検索ボックスに入力を開始したときに、ファイルを一度だけ読み取り/解析したいと思います。
私はここで立ち往生しています。 .catcomplete() (以下のコード) に Ajax 呼び出しをアタッチしようとしました。また、getJSON 呼び出しを行い、success() メソッドで .catcomplete を作成しようとしました。 どちらの方法も静かに失敗します。
私は JS/jQuery に慣れていないので、すでに気に入っていますが、少し迷っています。有用なドキュメントへのヘルプ/ソリューション/ポインタは大歓迎です。
どうもありがとうございました!
HTML は次のとおりです: (非常にシンプル)
<form id="searchform" method="get" role="search">
<input id="searchfield" />
<input type="submit" name="go" value="go!" />
</form>
ここに私のJSコードがあります:
$( "#searchfield" ).catcomplete({
delay: 0,
source: function( request, response ) {
$.ajax({
url: "/path/to/cache.json",
dataType: "json",
data: {term: request.term},
success: function(data) {
response($.map(data, function(item) {
return {
label: item.label,
category: item.category,
desc: item.desc
};
}));
}
});
},
minlength:0
});
サンプルの JSON データ:
[
{ label: "lbl1", category: "cat1", desc: "desc1"},
{ label: "lbl2", category: "cat1", desc: "desc2"},
{ label: "lbl3", category: "cat1"}
]