keypress イベントハンドラjsfiddleを持つテキストフィールドがあります。このフィールドに何か入力して「Enter」を 2 回押すと、2 つのリクエストが送信されます。ajaxリクエストの進行中は、すべてのイベントをオフにしたいです。1 つのオプションは、.off()
ajax 呼び出しの前に関数を呼び出してから、イベント ハンドラーを再度バインドすることです。他のオプションはありますか?
3 に答える
2
ajax 呼び出しからのコールバック ハンドラーと、フラグとして使用されるブール値を使用します。「always」コールバックで ajaxLoading ブール値を false に設定することで、現在の ajax 呼び出しがエラーをスローするかどうかに関係なく、他の将来のリクエストを確実に行うことができます。
var ajaxLoading = false;
if(!ajaxloading){
ajaxloading=true;
$.ajax({
url: 'your url',
type: 'GET',
dataType: 'JSON'
})
.done(function(data) {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
ajaxloading=false;
});
}
于 2013-10-01T13:32:47.047 に答える
1
次のような2つのブールフラグを使用します。
var is_requesting = false, should_request = false;
function onkeydown() {
if (is_requesting) {
should_request = true;
return;
}
is_requesting = true;
$.ajax({}, function () {
is_requesting = false;
if (should_request) {
onkeydown();
}
});
}
于 2013-10-01T13:26:36.173 に答える