2012-09-21 63 views
1

我有一个在我的网页,我想提出的,我使用Ajax调用:Ajax调用的onclick只发生一次

$(document).ready(function() { 
    $("#password_change").click(function() {      
     $.ajax({ 
      type: 'POST', 
      url: 'set_password.php', 
      data: 'password=' + $('#password').val(), 
      success: function(data) { 
       var obj = JSON.parse(data);    
       if(obj.success == '1') {  
        $('#message').show();        
       }else{ 
        $('#fail_message').show();        
       } 
      } 
     }); 
    }); 
}); 

我的形式:

<form id="password_form" name="password_form" action="" method="POST" style=""> 
    <input type="password" class="required" id="password" value="" /> 
</form> 

第一次我点击提交按钮,我得到正确的信息,一切似乎都很好。然后我再次点击submit按钮,但是通过ajax调用发送的数据是空的,所以我得到了ajax调用的错误回复。

有没有人有一个想法,为什么会发生这种情况?

在此先感谢

+1

您是否在使用例如网络流量检测网络流量? Chrome中的开发控制台? ajax请求是否与空数据有效载荷一起发送?在jsfiddle中只使用你的代码就可以正常工作(请求可以用密码数据多次发送),所以它应该是别的东西 - 也许你的PHP或者你的页面上的其他JavaScript。 –

+1

您可以在ajax调用之前检查$('#password')。val()值。 –

+1

我建议您删除整个'$ .ajax'调用,并在click事件中仅做一个'alert($('#password')。val())',以确保它不在客户端中JavaScript代码。如果警报不会触发多次,那么您至少知道这是一个JavaScript问题。 –

回答

0

我觉得当按钮单击时,它也发布支持。 onclick后使用event.preventDefault()停止触发器回发。请尝试修改代码:

... 
$("#password_change").click(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
    ... 
    ... 
    }); 
}); 
... 
+0

不,也不行。 – novellino

+0

检查我的更新。我添加了e参数在.click(function(e){...之前错过。 – Habibillah

+0

当您点击提交按钮时,您的页面是否被重新加载(是否“闪烁”?)密码字段在第一次点击还是仍在那里的charaacters? –