有没有办法阻止Jquery清除表单值?
我制作了以下Jquery脚本,它基本上将表单POST数据发送到php函数,然后如果PHP输出成功则重定向到新页面,如果不是则显示错误。
$('#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 ?>">
在页面加载时一切都很好,但是在我通过前端表单更新了字段的值并点击提交后,Jquery删除了字段的所有值,将空白值发送回php(输入到数据库中)和重定向到新页面,因为它正在收回成功消息。
我删除了Jquery并尝试将表单直接发送到php并且工作正常,因此它肯定是一个Jquery问题。
编辑:PHP变量是从另一个函数中提取的,当首次加载该特定页面时,这些函数最初会在字段中正确显示。
关于问题可能是什么的任何想法?
答案 0 :(得分:1)
尝试改变:
data: $(this).serialize(),
到
data: $("#your_form_id").serialize(),
OR
$('form').submit(function() {
$.ajax({
type: "POST",
url: 'function.php',
data: $(this).serialize(),
....
});
答案 1 :(得分:1)
你(可能 - 需要查看页面HTML才能确定)在错误的元素上调用.serialize()
。
您有一个click
事件处理程序绑定到ID为update
的元素。我猜这是你希望用户点击发送AJAX请求的按钮或链接。在该事件处理函数的上下文中,this
将是您单击的元素,因此调用$(this).serialize()
将尝试序列化按钮或链接,而不是表单。
你想要的是:
$('#id-of-your-form').serialize()
或者,如果您的网页上只有一个<form>
元素,则可以使用:
$('form').serialize();
顺便说一句,这似乎应该由服务器端验证处理(因此它拒绝空值)。