Php 为什么Jquery要重置表单值
有没有办法阻止Jquery清除表单值 我制作了下面的Jquery脚本,它将表单POST数据发送到php函数,如果php输出成功,则重定向到新页面,如果输出不成功,则显示错误Php 为什么Jquery要重置表单值,php,jquery,forms,reset,Php,Jquery,Forms,Reset,有没有办法阻止Jquery清除表单值 我制作了下面的Jquery脚本,它将表单POST数据发送到php函数,如果php输出成功,则重定向到新页面,如果输出不成功,则显示错误 $('#update').click(function(e) { e.preventDefault(); $.ajax({ type: "POST", url: 'function.php', data: $(this).serialize(), success: function
$('#update').click(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: 'function.php',
data: $(this).serialize(),
success: function(data)
{
if (data === 'Success') {
window.location = 'acc.php';
}
else {
alert('Please try again.');
}
}
});
});
表单值通过回显php变量来填充,如下所示:
<input type="text" name="name" id="name" value="<?php echo $name ?>">
尝试更改:
data: $(this).serialize(),
到
或
您(可能-需要查看页面HTML才能明确知道)在错误的元素上调用了.serialize()
您有一个click
事件处理程序绑定到id为update
的元素。我猜这可能是一个按钮或链接,您希望用户点击它来发送AJAX请求。在该事件处理程序函数的上下文中,this
将是您单击的元素,因此调用$(this).serialize()
将尝试序列化按钮或链接,而不是表单
您想要的是:
$('#id-of-your-form').serialize()
或者,如果页面上只有一个
元素,则可以使用:
$('form').serialize();
顺便说一句,这似乎是应该由服务器端验证来处理的事情(因此它拒绝空值)。serialize()
只对表单
元素起作用,但它看起来像是\update
(因此this
)是一个按钮。此外,阻止单击submit按钮的默认行为并不阻止提交表单。改为收听表单上的submit
事件。感谢Anthony,我最初尝试了表单id,但它仍然清除了值,然后尝试了“表单”,因为页面上只有一个表单,而且它成功了。感谢Sudhir,我使用了Anthony的解决方案,基本上是相同的。
$('#id-of-your-form').serialize()
$('form').serialize();