我有一个简单的ajax请求(它只是发送表单),当我单击按钮时会调用它。问题是,当我点击登录而失败时,php会回显“failed”,当我再次单击它时,php会“回显”它两次,然后三次等等,直到我刷新页面,然后重置“计数器”。它位于$(document).ready()内部,它使用POST。我的代码:
EDIT#1“代码编辑”
$('#register').click(function (event)
{
if (true)
{
var frm = $('#registerForm');
alert('debug1'); //DOESN'T REPEAT
frm.submit(function (ev) // THIS FUNCTION REPEATS, DONT KNOW WHY.
{
alert('debug2'); //DOES REPEAT
$.ajax(
{
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (text)
{
$("#reg_dialog").dialog({
hide:{effect:"drop",duration: 1000}}).dialog('close');
$("#info").html(text).fadeIn(400).delay(2500).fadeOut(500,function(){
if(text!=="User Created"){
location.reload(); // THIS ONE RESETS "THE COUNTER" AS I SAID BEFORE, BUT I DONT WANT TO RELOAD WHOLE PAGE
}})
}
});
ev.preventDefault();
return false;
});
}
编辑#2 (代码解释)
我希望这个能起作用。
发布于 2014-07-13 17:22:16
您要多次绑定到Submit事件。在此之前
frm.submit()
用途:
frm.unbind("submit");
发布于 2014-07-13 17:04:01
如果单击处理程序多次触发,则它将多次绑定到单击事件。您没有显示代码是如何包含在页面中的。要修复它,您需要设计它,以便单击处理程序只绑定一次。
如果只有一次绑定有问题,可以尝试在再次绑定单击处理程序之前使用.unbind()解除任何现有事件的绑定。
$('#register').unbind('click');
// this does the unbind
$('#register').click(function (event)
{
// the rest of your code etc...
发布于 2021-03-09 01:00:27
一个更好的解决办法是
.one()
$(".foo").one('click',function() {
//your code
});
https://stackoverflow.com/questions/24724911
复制相似问题