问题: 用户多次点击按钮,会发送多多个请求给后台,怎么样做只让一个请求发送过去;
我网上看了很多文章,不知什么样的bug少一点,有的根本看不懂,我简单做了一个demo,采用禁用按钮的方法;
点击后让按钮disabled,文字变为加载中;请求成功后移除disabled属性,恢复文字;这个逻辑有问题吗?我感觉考虑的不全,比如请求error时的处理,请求stop时的处理,是不是都要让按钮状态恢复一下?求指点
<button id="button">Click !</button>
<script type="text/javascript">
$("#button").on("click", function(){
$(this).attr("disabled",true);
$(this).html("加载中...")
$.ajax({
url:"./fastClick.php",
success: function(res){
console.log(res);
$("#button").html("Click !")
$("#button").removeAttr("disabled");
}
})
})
</script>
$(function () { $.ajax({ url: 'http://www.baidu.com' }).always(function () { console.log('always'); }); });
可以在always中处理这类事情
对于防止用户多次点击的方法,请问有什么建议吗,或者推荐的方法?
@_只影向谁去:
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title></title> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script> $(function () { var $btnSend = $('#btnSend'); $btnSend.click(function () { $btnSend.attr('disabled', 'disabled'); $.ajax({ url: 'http://www.baidu.com' }).always(function () { //模拟请求延时 setTimeout(function () { $btnSend.removeAttr('disabled'); }, 1000 * 2); }); }); }); </script> </head> <body> <button id="btnSend">发送请求</button> </body> </html>
因为always始终会执行,所以说在always中恢复按钮的状态,就不用分别在error或者success里面来恢复。
楼上已经告诉你了啊