2014-04-24 47 views
2

所以我一直在這個項目上自殺,也許是因爲我試圖做到這一點很難:)我一直試圖將下面的動態PHP表單轉換爲提交相同的信息,但通過AJAX,我沒有經驗,但我想在不離開頁面的情況下提交。在準備給潛在程序員電話採訪時,我研究了「每個PHP編碼員應該知道的事情」(http://terrychay.com/article/php-coders.shtml),同時介紹了使用遠程腳本和iframe完成相同任務的不同方法。意識到可能有幾十種這樣做的方式,採取以下形式的「最佳」方式是什麼,並在不離開頁面的情況下提交它?由於我最瞭解PHP,有沒有更適合我的應用,還是應該繼續使用AJAX?最簡單的表單提交而不重定向?

<form action="functions.php?do=save" method="POST" id="saveSettings"> 
<table width=100%> 
<tr><th>Setting</th><th>Value</th><th>Active</th></tr> 
<? 
include 'db.php'; 

$i=0; 
    foreach($db->query('SELECT * from settings') as $row) { 
    echo ($i % 2)?'<tr class="odd">':'<tr class="even">'; 
     print_r("<td width=200>" . $row[1] . "</td> 
     <td><input type=\"textbox\" name=\"" . $row[1] . "[]\" value=\"" . $row[2] . "\"></td> 
     <td><input type=\"hidden\" name=\"" . $row[1] . "[1]\" value=\"INACTIVE\"> "); //set value so it never passes NULL 
      if ($row[3] == "ACTIVE"){ 
      print_r("<input type=\"checkbox\" name=\"" . $row[1] . "[1]\" value=\"ACTIVE\" checked=\"true\"></td></tr>"); 
      } 
      else{ 
      print_r("<input type=\"checkbox\" name=\"" . $row[1] . "[1]\" value=\"ACTIVE\"></td></tr>"); 

      } 
    $i++; 
    } 
?> 
</tbody> 
</table> 
<input type="submit" value="Save Settings"> 
</form> 

回答

5

這很簡單,真的,所有你需要做的是以下的jQuery:

$('form').on('submit', function(){ 
    var $this = $(this); 
    $.ajax({ 
     type: $this.prop('method'), 
     url: $this.prop('action'), 
     data: $this.serialize(), 
     success: function(data){ 
      //do something with the return of the php script 
     } 
    }); 
    return false; //prevent the form from causing the page to refresh 
}); 

$.serialize()用於開啓形式爲文本字符串,它是URL編碼。這使得獲取php腳本中的值變得很簡單,因爲根據上面的表單結構,任何內容都不應該改變。

+0

那簡直太棒了!我無法告訴你我已經花了多少天,但從未完全到達那裏,但是您可以查看我的賬戶問題歷史記錄以獲得想法:)非常感謝。 – Alan