私はAppleのスポットライトに触発されたjQueryAutoSuggestプラグインの構築に取り組んでいます。
一般的なコードは次のとおりです。
$(document).ready(function() {
$('#q').bind('keyup', function() {
if( $(this).val().length == 0) {
// Hide the q-suggestions box
$('#q-suggestions').fadeOut();
} else {
// Show the AJAX Spinner
$("#q").css("background-image","url(/images/ajax-loader.gif)");
$.ajax({
url: '/search/spotlight/',
data: {"q": $(this).val()},
success: function(data) {
$('#q-suggestions').fadeIn(); // Show the q-suggestions box
$('#q-suggestions').html(data); // Fill the q-suggestions box
// Hide the AJAX Spinner
$("#q").css("background-image","url(/images/icon-search.gif)");
}
});
}
});
私が上手くエレガントに解決したい問題は、サーバーを殺すことではありません。現在、上記のコードは、キーを入力するたびにサーバーにヒットし、基本的に入力が完了するのを待ちません。これを解決するための最良の方法は何ですか?A.以前のAJAXリクエストを強制終了しますか?B.ある種のAJAXキャッシング?C.ある種の遅延を追加して、人が300ミリ秒ほど入力を停止したときにのみ.AJAX()を送信しますか?