2012-06-06 34 views
1

我的頁面頭部有一個基本的AJAX表單提交功能(從教程中被盜,因爲我無法從頭開始寫這些東西)。在我的頁面正文中,我有一堆隱藏輸入的表單,其值與我數據庫中的用戶標識相對應。AJAX多表單帖子

這個想法是,當你提交一個表單時,隱藏的值POST'd到我的PHP頁面,在那裏它從我的MySQL數據庫中刪除具有該id的用戶。這一切都非常簡單直接,可能有更高效的方式來做到這一點,但這是我能想到的唯一方法。

無論如何,問題是我的AJAX函數只適用於我的頁面中的第一個表單。當我提交表單時,用戶將從我的數據庫中刪除,頁面刷新並且特定表單消失。但是,如果您點擊頂部下方的任何表單,則什麼都不會發生。這裏是我的jQuery的功能:

<script type="text/javascript"> 


$(document).ready(function(){ 
    $("#myform").validate({ 
     debug: false, 
     rules: { 
      group: {required: true}, 
     }, 
     messages: { 
      group: {required: " Field required.", loginRegex: " Invalid character."}, 
     }, 
     submitHandler: function(form) { 
      $.post('process_delete_participant.php', $("#myform").serialize(), function(data) { 
       $('#results').html(data); 
      }); 
     } 
    }); 
}); 


</script> 

這裏還有什麼是在我的網頁正文:

<?php 

$query = mysql_query('SELECT * FROM `Participant`'); 
    if (!$query) 
{ 
    die('Query failure: '.mysql_error()); 
} 

while($rows = mysql_fetch_array($query)) 
{ 

$fname = $rows['firstName']; 
$sname = $rows['secondName']; 
$id = $rows['idParticipant']; 

echo "<form name='myform$id' id='myform$id' action='' method='POST'> "; 
echo "<input type='hidden' name='idParticipant' id='$id' value='$id' />"; 
echo "$fname "; 
echo "$sname "; 
echo "<input type='submit' name='submit$id' id='submit$id' value='Delete' /> "; 
echo "</form>"; 
echo "<br><br>"; 

} 

?> 

這樣的一種形式的例子可能是這個樣子:

<form name='myform61' id='myform61' action='' method='POST'> 
<input type='hidden' name='idParticipant' id='61' value='61' />John Smith 
<input type='submit' name='submit61' id='submit61' value='Delete' /> 
</form> 

我可以想到爲什麼該函數僅適用於最頂層窗體的幾個原因,但我不知道要在函數的語法中編輯哪些內容才能解決問題。有人知道嗎?

+0

順便說一聲ID必須以字母 – Thomas

回答

4

示例中的選擇器是通過ID明確指定的。你可以試試$(「[id^= myform]」),因爲它匹配一個id的開頭。

另外,用$(this)替換第二個調用「$(」#myform「)」以確保正確的上下文。

編輯(添加):

$("[id^=myform]").validate({ 
     debug: false, 
     rules: { 
      group: {required: true}, 
     }, 
     messages: { 
      group: {required: " Field required.", loginRegex: " Invalid character."}, 
     }, 
     submitHandler: function(form) { 
      $.post('process_delete_participant.php', $(this).serialize(), function(data) { 
       $('#results').html(data); 
      }); 
     } 
    }); 
+0

開頭也謝謝你! – AzzyDude

2
$("#myform").validate({ 

這僅設置與ID 'myForm的' 在元件上的驗證。

最簡單的辦法是把它的一切形式

$('form').validate({ 

或各種形式的名稱以myForm會開始

$('form[id^=myform]').validate({ 

或任何形式的與特定類

$('form.validate').validate({ 
+0

謝謝!這工作!我知道這是一個簡單的問題,但我不知道語法是怎麼改變它的。 – AzzyDude

+0

那麼投票呢? ;) – Thomas

+1

投票需要15點聲望? :S – AzzyDude