Jquery 通过ajax表单提交发送默认提交按钮

Jquery 通过ajax表单提交发送默认提交按钮,jquery,ajax,forms,Jquery,Ajax,Forms,我有一个表单,我通过ajax将它发送到php文件来操作数据库 //html <form id='editUserForm' action='insert.php' method='post'> <input type='text' name="userName/> <input type='text' name="userLastName/> <input type='submit' name='editUser' value='submit

我有一个表单,我通过ajax将它发送到php文件来操作数据库

//html

<form id='editUserForm' action='insert.php' method='post'>
  <input type='text' name="userName/>
  <input type='text' name="userLastName/>
  <input type='submit' name='editUser' value='submit'/>
</form>
//insert.php

  if(isset($_POST['editUser'])){
if(isset($_POST['chUserStatus'])){
    $active='َactive'; 
}else{$active='disabled';}
$query="update admins set user='$_POST[chUserName]', pass='$_POST[chUserPass]',email='$_POST[chUserEmail]',level='$_POST[chUserLevel]',status='$active' where id=$_POST[userId]";
$result=mysqli_query($dbCnn,$query);
echo(mysqli_error($dbCnn));
} 问题就在这里,因为我的函数阻止表单默认提交,所以它不会将提交btn名称/值发布到insert.php。如何将其作为参数发送到insert.php?

serialize()
无法从
按钮
元素中检索任何属性,如果需要,您需要自己添加该信息:

var $button = $('#editUser :submit');

// in the $.ajax...  
data: $(this).serialize() + '&' + $button.prop('name') + '=' + $button.val(),
serialize()
不从
按钮
元素中检索任何属性,如果需要,您需要自己添加该信息:

var $button = $('#editUser :submit');

// in the $.ajax...  
data: $(this).serialize() + '&' + $button.prop('name') + '=' + $button.val(),

您可以在序列化之前将其放入表单数据对象中,甚至在序列化之后追加它。 我个人只会添加一个新的隐藏输入,如:

<input type="hidden" name="action" value="editUser" />

您可以在序列化之前将其放入表单数据对象中,甚至在序列化之后追加它。 我个人只会添加一个新的隐藏输入,如:

<input type="hidden" name="action" value="editUser" />

$(“#搜索”).submit(函数(e){
e、 预防默认值();
$.ajax({
url:'insert.php',
数据类型:“文本”,
键入:“post”,
contentType:'application/x-www-form-urlencoded',
数据:$(this).serialize(),
成功:函数(数据、文本状态、jQxhr){
警惕(“完成”);
},
错误:函数(jqXhr、textStatus、errorshown){
console.log(错误抛出);
}
});
})

$(“#搜索”).submit(函数(e){
e、 预防默认值();
$.ajax({
url:'insert.php',
数据类型:“文本”,
键入:“post”,
contentType:'application/x-www-form-urlencoded',
数据:$(this).serialize(),
成功:函数(数据、文本状态、jQxhr){
警惕(“完成”);
},
错误:函数(jqXhr、textStatus、errorshown){
console.log(错误抛出);
}
});
})


为什么不可能:data:{$(this).serialize(),'submit':'ok'},这不起作用,因为您需要将querystring编码在单个参数中,然后添加到另一个querystring中。例如:
foo.com?foo1%3Dbar1%26foo2%3Dbar2&submit=ok
为什么不可能:数据:{$(this).serialize(),'submit':'ok'},这不起作用,因为您需要将查询字符串编码在单个参数中,然后添加到另一个查询字符串中。例如:
foo.com?foo1%3Dbar1%26foo2%3Dbar2&submit=ok