2016-01-25 235 views
0

我有一个表单,我通过ajax发送到php文件来操作数据库。通过ajax表单提交防止默认提交按钮

// 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?

回答

1

serialize()不检索button元素的任何属性,你需要自己添加这些信息,如果你需要它:

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

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

为什么不可能:data:{$(this).serialize(),'submit':'ok'}, –

+0

这样做是行不通的,因为你会在单个参数中编码querystring,添加到另一个查询字符串。例如:'foo.com?foo1%3Dbar1%26foo2%3Dbar2&submit = ok' –

0

你可以把它放在连载前的表单数据对象,矿石甚至追加它在序列化之后。 个人而言,我会只需添加一个新的隐藏的输入,如:

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

是的。这也是可能的 –

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>

中看到结果控制台。