[英]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.