我有简单的ajax请求(它只是发送表单),当我点击按钮时会调用它。问题是,当我点击登录并且它失败了,php确实回应了#34; FAIL"当我再次点击它然后php"回声"它会发生两次,然后是三次等。直到我刷新页面然后才会出现#34;计数器"复位。 它在$(document).ready()里面,它使用POST。 我的代码:
编辑#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(代码说明)
我希望如何运作。
答案 0 :(得分:1)
您多次绑定到提交事件。 之前
frm.submit()
使用:
frm.unbind("submit");
答案 1 :(得分:0)
如果您的点击处理程序多次触发,则它会多次绑定到点击事件。您不会显示代码是如何包含在页面中的。要修复它,您需要对其进行设计,以使点击处理程序仅绑定一次。
如果您只在绑定一次时遇到问题,可以在再次绑定点击处理程序之前尝试使用.unbind()取消绑定任何现有事件。
$('#register').unbind('click');
// this does the unbind
$('#register').click(function (event)
{
// the rest of your code etc...
答案 2 :(得分:0)
更好的解决方案是
.one()
$(".foo").one('click',function() {
//your code
});