私はjQueryに関してはやや初心者であり、それを理解するために最善を尽くしています. 以下は、フィードバックをお待ちしております 2 つのコードです。私の最終的な目的は、ボックスに入力された内容を照会することです。以下の 2 つのコードで 2 つの問題についてそれぞれ説明します。
function update_results(){
$.ajax({
url: '{base}modules/search.php?q=' + $("#q").val(),
success: function(data) {
$('#q').bind('keyup', function() { $('#results').fadeIn(400).delay(500).html(data); } ).keyup();
}
});
}
このコードは、リクエストがサーバーとのループにスローされると、ブラウザの速度を大幅に低下させますが、完全に機能します (入力された文字に追いつきます)。
function update_results(){
$.ajax({
url: '{base}modules/search.php?q=' + $("#q").val(),
success: function(data) {
$('#q').bind('keyup', function() { $('#results').fadeIn(400).delay(500).html(data); } );
}
});
}
このコードにはループの問題はありませんが、search.php ページに送信されるクエリを入力すると、常に最後の 2 ~ 3 文字が欠落します。
上記の 2 つのシナリオのいずれかをトリガーする HTML 要素を次に示します。
<h3>Site Search</h3>
<input id="q" type="text" onkeyup="update_results()" value="Type in a search term..." onFocus="this.value='';" /><br>
<a href="javascript:clear_results();">(Reset)</a> | <a href="search/">(Advanced Search)</a>
<div id="results" style="text-align: left; font-size: 11px;"></div></center>
</div>
私が望んでいるのは、 #q のコンテンツが search.php?q= に送信され、データが返されて #results div に配置されることだけです。また、何らかのタイマーをそこに配置したかったので、任意の時間値で指定されたとおりに入力が完了した後、または数秒ごとにのみ、文字が入力されるたびにサーバーにクエリを実行しません。その人が入力を終えたら、明らかにサーバーへの攻撃をやめさせたいと思っています。
インターネットで調べてみましたが、調べていないように見えたら申し訳ありません。それどころか、昨日jQueryを学び始めたばかりです。
お時間をいただきありがとうございます。これが本当に初心者の質問である場合は、事前にお詫び申し上げます。