我有一个表单,我将其通过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>
// AJAX
(function($){
function processForm( e ){
$.ajax({
url: 'insert.php',
dataType: 'text',
type: 'post',
contentType: 'application/x-www-form-urlencoded',
data: $(this).serialize(),
success: function( data, textStatus, jQxhr ){
alert("Done");
error: function( jqXhr, textStatus, errorThrown ){
console.log( errorThrown );
}
});
e.preventDefault();
}
$('#editUserForm').submit( processForm );
})(jQuery);
// 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?
答案 0 :(得分:1)
serialize()
无法从button
元素中检索任何属性,如果需要,您需要自己添加该信息:
var $button = $('#editUser :submit');
// in the $.ajax...
data: $(this).serialize() + '&' + $button.prop('name') + '=' + $button.val(),
答案 1 :(得分:1)
$("#search").submit(function(e){
e.preventDefault();
$.ajax({
url: 'insert.php',
dataType: 'text',
type: 'post',
contentType: 'application/x-www-form-urlencoded',
data: $(this).serialize(),
success: function( data, textStatus, jQxhr ){
alert("Done");
},
error: function( jqXhr, textStatus, errorThrown ){
console.log( errorThrown );
}
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="search">
<input name="q"/>
<input type="submit" value="Submit"/>
</form>
在控制台中查看结果。
答案 2 :(得分:0)
您可以在序列化之前将其放在表单数据对象中,甚至可以在序列化后附加它。 就个人而言,我只是添加一个新的隐藏输入,如:
<input type="hidden" name="action" value="editUser" />