2016-01-25 290 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>

中看到結果控制檯。