为什么Jquery重置表单值

时间:2013-02-25 10:59:37

标签: 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(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变量是从另一个函数中提取的,当首次加载该特定页面时,这些函数最初会在字段中正确显示。

关于问题可能是什么的任何想法?

2 个答案:

答案 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();

顺便说一句,这似乎应该由服务器端验证处理(因此它拒绝空值)。