当用户单击登录或注册按钮时,我试图阻止多个请求。这是我的代码,但是不起作用。只是第一次工作正常,然后返回false。
$('#do-login').click(function(e) { e.preventDefault(); if ( $(this).data('requestRunning') ) { return; } $(this).data('requestRunning', true); $.ajax({ type: "POST", url: "/php/auth/login.php", data: $("#login-form").serialize(), success: function(msg) { //stuffs }, complete: function() { $(this).data('requestRunning', false); } }); });
有任何想法吗?谢谢!
问题在这里:
complete: function() { $(this).data('requestRunning', false); }
this 不再指向按钮。
this
$('#do-login').click(function(e) { var me = $(this); e.preventDefault(); if ( me.data('requestRunning') ) { return; } me.data('requestRunning', true); $.ajax({ type: "POST", url: "/php/auth/login.php", data: $("#login-form").serialize(), success: function(msg) { //stuffs }, complete: function() { me.data('requestRunning', false); } }); });