2012-04-14 40 views
0

我正在製作一個帶有多個單選按鈕的調查表單。 的問題是在數據庫中,我挑選的問題和顯示選項單選按鈕使用php的多個單選按鈕javascript ajax

<div id="question"> 
    <form id="pollform">; 
<?php 
    $i=0; 
    while(list($ID,$Question,$form,$one,$two,$three,$four,$five)=mysql_fetch_array($result)){ 
     $i++; 
?> 
     <p><?php echo $ID.") ".$Question; ?></p> 
     <input type="radio" name="radio<?php echo $i;?>" value="1" /> <?php echo $one; ?><br /> 
     <input type="radio" name="radio<?php echo $i;?>" value="2" /> <?php echo $two; ?><br /> 
     <input type="radio" name="radio<?php echo $i;?>" value="3" /> <?php echo $three; ?><br /> 
     <input type="radio" name="radio<?php echo $i;?>" value="4" /> <?php echo $four; ?><br /> 
     <input type="radio" name="radio<?php echo $i;?>" value="5" /> <?php echo $five; ?><br /> 
<?php 
    } 
?> 
    <input type="button" id="review-submit" value="Submit" onclick="pollsubmit();"> 
    <form> 
</div> 

爲了處理這個問題,併發送使用Ajax所選擇的答案,我用下面的代碼

<script language=Javascript> 
function pollsubmit(){ 
<?php 
    $dbquerry="SELECT `ID`, `Question`, `Form`, `one`, `two`,`three`,`four`,`five` FROM `pollquestions` Order by `ID`"; 
    $result=mysql_db_query($dbname,$dbquerry); 
?> 
    var answers = new Array(); 
    var form1=document.getElementById("pollform"); 
<?php 
    $count=0; 
    while(list($ID,$Question,$form,$one,$two,$three,$four,$five)=mysql_fetch_array($result)){ 
     $count++; 
?> 
     for (var i=1;i<=5;i++) { 
      if(form1.radio<?php echo $count;?>[i].checked) { 
       answers[<?echo $ID;?>]= form1.radio<?php echo $count;?>.value; 
      } 
     } 
<?php 
    } 
?> 
} 
</script> 

但這雖然在名字是radio1的地方給我一個Cannot read property 'checked' of undefined。而如果我只使用字符串說例如name="radio1"它正在工作,但如果我使用name="radio<?php echo $i;?>"它不起作用。你可以幫忙

+1

你是認真的'而(名單(...)= ...)'循環?爲什麼不把它分配給一個數組/對象然後使用那個?爲什麼你手動構建JavaScript數組而不是使用'json_encode()'? – ThiefMaster 2012-04-14 08:46:15

+0

你可以檢查通過這段代碼生成的html .........,如果你沒有發現錯誤,你可以將其粘貼在這裏...我們可能會看看它 – 2012-04-14 08:49:11

+0

檢查在[鏈接] http://edumetric.in/disp.php?Area_ID=6&sort=Ranking&City_ID=2 html輸出在那裏。我已經使用單選按鈕 – 2012-04-14 09:00:40

回答

0

javascript for循環應該從0開始。對於你需要的值[i]。

for (var i=0;i<5;i++) { 
    if(form1.radio<?php echo $count;?>[i].checked) { 
     answers[<?echo $ID;?>]= form1.radio<?php echo $count;?>.value; 
    } 
} 
+0

仍然不工作:(你可以檢查在[link](http://edumetric.in/disp.php?Area_ID=6&sort=Ranking&City_ID=2)中完成代碼的工作,在彈出的窗口中單擊進行輪詢,然後按提交,您將看到錯誤。 – 2012-04-14 10:19:53

+0

你忘了把'i <= 5'改成'i <5',它在第六個循環處會引發錯誤 – 2012-04-14 15:58:04

+0

非常感謝你的配合,這個錯誤我無法發現,而且讓我感到很沮喪。這是得到解決,並感謝噸 – 2012-04-14 17:37:14

0
<script language=Javascript> 
function pollsubmit(){ 
<?php 
    $dbquerry="SELECT `ID`, `Question`, `Form`, `one`, `two`,`three`,`four`,`five` FROM `pollquestions` Order by `ID`"; 
    $result=mysql_db_query($dbname,$dbquerry); 
?> 
    var answers = new Array(); 
    var form1=document.getElementById("pollform"); 
<?php 
    $count=0; 
    while(list($ID,$Question,$form,$one,$two,$three,$four,$five)=mysql_fetch_array($result)){ 
     $count++; 
?> 
     for (var i=1;i<=5;i++) { 
      if(form1.['radio<?php echo $count;?>'][i].checked) { 
       answers[<?echo $ID;?>]= form1.['radio<?php echo $count;?>'].value; 
      } 
     } 
<?php 
    } 
?> 
} 
</script> 

編輯:

for (var i=1;i<=5;i++) { 
       if(form1.['radio<?php echo $count;?>'][i].checked) { 
        answers[<?echo $ID;?>]= form1.['radio<?php echo $count;?>'].value; 
       } 
      }