Javascript 确保ajax请求不存在';不要被多次解雇
我正在处理一个简单的表单页面,我想知道如果有人多次点击提交按钮会发生什么情况(万一我的共享主机在那个时候看起来很慢) 还有,万一有人想看我的代码Javascript 确保ajax请求不存在';不要被多次解雇,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在处理一个简单的表单页面,我想知道如果有人多次点击提交按钮会发生什么情况(万一我的共享主机在那个时候看起来很慢) 还有,万一有人想看我的代码 $.ajax({ url: "submit.php", type: 'POST', data: form, success: function (msg) { $(".ressult").html("Thank You!"); }, error: function () {
$.ajax({
url: "submit.php",
type: 'POST',
data: form,
success: function (msg) {
$(".ressult").html("Thank You!");
},
error: function () {
$(".result").html("Error");
}
});
有没有办法让它在用户单击一次后,在第一次单击完成之前不会再次运行
谢谢您是否考虑过在执行查询时用加载器图像替换提交按钮,然后在查询完成后重新添加
编辑:使用加载器图像是一种通用的“我正在做某事”指示器,但是禁用按钮也可以 您可以在ajax调用之前禁用submit按钮。然后,如果需要,在成功时启用它。使用布尔标志
if (window.isRunning) return;
window.isRunning = true;
$.ajax({
url:"submit.php",
type: 'POST',
data: form,
success: function (msg){
$(".ressult").html("Thank You!");
},
error: function (){
$(".result").html("Error");
},
complete : function () {
window.isRunning = false;
}
});
您可以使用jQuery的函数:
(function handleSubmit() {
$('#submitBtn').one('click', function() {
var $result = $('.result');
$.ajax({
url: 'submit.php',
type: 'POST',
data: form,
success: function (msg) {
$result.html('Thank You!');
handleSubmit(); // re-bind once.
},
error: function () {
$result.html('Error');
}
}); // End ajax()
}); // End one(click)
}()); // End self-invoked handleSubmit()
*编辑:*为多个提交添加了递归 首次单击后禁用“提交”按钮。可能的重复问题是用户希望该功能再次运行。我在原始答案中介绍了如何处理多个提交,但在任何方面,我都使用了一个示例进行了更新。干杯~什么是window.isRunning?它是一个全局变量,有关更多信息,请参见此处:
var $button = $(this);
$button.prop('disabled', true); // disable the button
$.ajax({
url:"submit.php",
type: 'POST',
data: form,
success: function (msg){
$(".ressult").html("Thank You!");
},
error: function (){
$(".result").html("Error");
},
complete: function() {
$button.prop('disabled', false); // enable it again
}
});