Jquery Ajax调用onclick只发生一次
我想提交的页面中有一个from,我使用ajax调用:Jquery Ajax调用onclick只发生一次,jquery,ajax,forms,onclick,submit,Jquery,Ajax,Forms,Onclick,Submit,我想提交的页面中有一个from,我使用ajax调用: $(document).ready(function() { $("#password_change").click(function() { $.ajax({ type: 'POST', url: 'set_password.php', data: 'password=' + $('#password')
$(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按钮时,我得到了正确的消息,一切似乎都很好。然后我再次单击submit按钮进行第二次操作,但是通过ajax调用发送的数据是空的,因此我得到了错误的ajax调用回复
有人知道为什么会这样吗
提前感谢我想当按钮点击时,它也会被后置。你停止触发后回使用后onclick。尝试修改代码:
...
$("#password_change").click(function(e) {
e.preventDefault();
$.ajax({
...
...
});
});
...
您是否使用Chrome中的dev console等设备检查网络流量?发送ajax请求时是否有空的数据负载?在JSFIDLE中只使用您的代码可以很好地工作(请求可以与密码数据一起发送多次),因此它应该是其他东西-可能是您的PHP,或者页面上的其他JavaScript。您可以在第二次单击后检查$('#password').val()值吗,在ajax调用之前。我建议您删除整个
$.ajax
调用,只需在单击事件上执行警报($(“#密码”).val())
,以确保它不是客户端JavaScript代码中的内容。如果警报没有触发多次,那么您至少知道这是一个JavaScript问题。此外,我在firebug中检查了post值,看起来不错。如果我在php文件中打印它们,它们看起来是空的。那么php中可能有问题?好的,我发现这是我的php文件中的一个问题,你是对的。检查我的更新。我已经在上面添加了e参数。单击(函数(e){…之前错过了。当您单击提交按钮时,您的页面是否正在重新加载(是否“闪烁”)?第一次单击后密码字段是否变为空,或者字符是否仍然存在?@novellino demo forpreventDefault
: