[英]How to check whether an ajax request has allready been sent with Jquery?
我正在使用Ajax請求通過Jquery發布表單。
$.ajax(
{
type: "POST",
url: "login.php",
data: $("#signin").serialize(),
dataType: "json",
cache: false,
success: function(data, textStatus) {
if (data.redirect) {
window.location.replace(data.redirect);
}
else {
$('#some').fadeOut(200);
$('#some2').fadeIn(200);
$("#some3").html(data.form);
$("#some").delay(2000).fadeOut(200);
$('#some2').delay(2800).fadeIn(300);
}
}
});
現在,只要單擊按鈕“登錄”,就會發出ajax請求。 現在的問題是,如果您多次按下按鈕,則else case將被執行幾次,這將導致#some,#some2和#some3淡入淡出並出現幾次。 那么,如何檢查請求是否已全部發送(而不必在數據庫中寫入內容)呢?
在登錄時設置布爾值標志,例如login_in_process
,請檢查此標志為true
值。 並在每次點擊時檢查此標志(如果為true
然后返回空值。 成功和錯誤回調會將其設置為false
狀態。
您可以使用布爾值來記錄是否已單擊它:
var loginClicked = false;
$('input_button_element').click(function(){
if (!loginClicked) {
loginClicked = true;
// your js here - you may want to add some visual feedback to the user also
}
});
你可以做一個全局變量
var loginClick = false;
在方法內部,首先檢查該值
if (!loginClick) {
loginClick = true;
//your ajax code;
}
您將必須在全局范圍內存儲一個布爾值,例如,一個布爾值存儲在window對象上:
if (!window.isClicked) {
window.isClicked = true;
...Do your ajax call here
}
請記住,不僅要在ajax()的成功回調中,始終要還原window.isClicked的值:
var jqxhr = $.ajax( ... )
.done(function() { })
.fail(function() { })
.always(function() { window.isClicked = false });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.