Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么Jquery要重置表单值_Php_Jquery_Forms_Reset - Fatal编程技术网

Php 为什么Jquery要重置表单值

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

有没有办法阻止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 ?>">
尝试更改:

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