2012-06-06 4 views
1

내 페이지의 머리 부분에 기본적인 AJAX 폼 제출 기능이 있습니다 (처음부터이 물건을 쓸 수 없기 때문에 튜토리얼에서 도난당했습니다). 내 페이지의 본문에는 내 데이터베이스에있는 사용자 ID에 해당하는 값을 가진 숨겨진 입력 양식이 있습니다.AJAX 다중 폼 포스트

양식을 제출할 때 내 MySQL 데이터베이스에서 해당 ID를 가진 사용자를 숨기는 내 PHP 페이지에 숨겨진 값이 POST됩니다. 그것은 모두 꽤 똑바로 앞으로 그것을 할 훨씬 더 효율적인 방법이있을 수 있지만 이것은 내가 생각할 수있는 유일한 방법입니다.

어쨌든 문제는 제 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> 

그리고 여기 내 페이지의 본문의 내용은 다음과 같습니다

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

:

<?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>"; 

} 

?> 

그래서 양식 중 하나의 예는 다음과 같이 보일 수 있습니다 함수가 최상위 형식에서만 작동하는 몇 가지 이유를 생각할 수 있지만 문제를 해결하기 위해 함수의 구문을 편집하는 방법을 알지 못합니다. 누구 알아?

+0

의견 ID가 – Thomas

답변

4

예제의 선택자는 ID로 명시 적입니다. $ ("[id^= myform]")을 시도해 볼 수 있습니다. id의 시작과 일치합니다.

또한 두 번째 호출을 $ ("# myform") "을 $ (this)로 바꾸어 정확한 컨텍스트를 유지하십시오.

은 (추가) 편집 :

$("[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 명을 필요로합니까? :에스 – AzzyDude