私がこれから尋ねようとしていることが可能かどうか、または物事について正しいやり方であるかどうかはわかりませんが、ここに行きます。
AJAXを使用してサーバーからデータをロードし、それを視覚的に表示するWebページがあります。ユーザーは、ページ上の2つのボタンのいずれかを使用して、週でフィルタリングされたデータを「スクロール」するオプションがあります。これらのボタンのコードは次のようなものです。
$("#leftButton").click(function () {
clearCurrentlyDisplayedData();
changeFilter(1); //Or -1, or whatever.
loadAndDisplayData();
}
この(簡略化された)例では、loadAndDisplayData()はAJAX呼び出しを使用してこのデータをフェッチし、リクエストの完了時に次のように表示します。
$.get(
"web/service/address",
function (data, textStatus, jqXHR) {
//Display the data here
});
ただし、ユーザーが矢印をクリックしてデータをすばやくスクロールしすぎると、問題が発生します。ボタンを2回続けてすばやくクリックすると、2週間分のデータが重なり合って表示されます。
データが収集されるまでボタンを無効にしたくありません。データの収集と表示には少し時間がかかるため、ユーザーがサイト内をすばやく移動できなくなり、すぐにイライラすることになります。
2セットのデータのロードを防ぐために、ユーザーがボタンの1つをクリックしたときに、現在実行中のスクリプトまたはAJAX呼び出し(またはこれらの結果として呼び出される関数)を強制終了することは可能ですか?この問題を解決する方法は他にありますか?