2013-07-13 101 views
1

我想訪問動態創建的複選框的值。使用AJAX訪問多個複選框的值

<form id="promotionform" action="promotestudents.php" method="POST"> 
      <div id="promoteresults">The results will show up here..!! 
      </div> 


      <div style=" position:relative; margin-top:10px; padding-left:44%;"> 
       <button type="submit" class="button black">Promoted</a> 
      </div> 
    </form> 

當推動按鈕被點擊我想選擇的記錄,並更新自己的價值

@ $db = mysql_connect("abc", "abc", ""); 
          mysql_select_db("abc"); 

          $strSQL = "SELECT * FROM student"; 
          $rs = mysql_query($strSQL); 
          $num_rows = mysql_num_rows($rs); 
          echo "<i style='color:#fff'> Number of Students = ".$num_rows."</i>"; 
          $i=1; 
          while($r = mysql_fetch_array($rs)){ 

          echo "<tr>"; 
          echo "<td class='promotetabledata'>".$r[7]."</td>"; 
          echo "<td class='promotetabledata'>".$r[6]."</td>"; 
          echo "<td class='promotetabledata'><input type='checkbox' class='pr' value='".$r[7]."'/></td>"; /*dynamically created check boxes*/ 
          echo "</tr>"; 
          $i++; 
       } 

結果顯示在promoteresults div。要更新記錄,我需要PHP。我可以用

var selected = document.getElementsByClassName('pr').checked;

訪問選定的記錄JavaScript,但我如何才能在HTML形式的檢查記錄,它們的值在PHP

Ajax調用的JavaScript

function getpromotestudents() 
{ 
//alert("hi"); 

var xmlhttp; 
var select1 = document.getElementById('promotefacultyselect1'); 
var facutlyselect = select1.options[select1.selectedIndex].value; 


var select2 = document.getElementById('promotedepartmentselect1'); 
var deptselect = select2.options[select2.selectedIndex].value; 


var select3 = document.getElementById('promotecourseselect1'); 
var courseselect = select3.options[select3.selectedIndex].value; 


var select4 = document.getElementById('promoteyearselect1'); 
var yearselect = select4.options[select4.selectedIndex].value; 


var select5 = document.getElementById('promotesemselect1'); 
var semselect = select5.options[select5.selectedIndex].value; 


var the_data = 'faculty='+facutlyselect+' &dept='+deptselect+' &course='+courseselect+' &year='+yearselect+' &sem='+semselect; 


if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    /* 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("searchresults").innerHTML=xmlhttp.responseText; 
    } 
    }*/ 



    xmlhttp.open("POST", "getpromotestudents.php", true);   // set the request 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");   // adds a header to tell the PHP script to recognize the data as is sent via POST 
    xmlhttp.send(the_data);  // calls the send() method with datas as parameter 

    // Check request status 
// If the response is received completely, will be transferred to the HTML tag with tagID 
    xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4) { 
     document.getElementById("promoteresults").innerHTML = xmlhttp.responseText; 
    } 
    } 
} 
+0

請向我們展示您的ajax電話。你在使用jQuery嗎? – vee

+1

他不會爲getElementsByClassName而煩惱,如果他使用jQuey,我認爲:) – Robert

+0

@vinodadhikary我正在使用javascript,我已更新問題以向您展示AJAX部分 –

回答

0

給每個checkboxname財產這樣

<input type='checkbox' class='pr' value='8' name='chk[]'/> 

比在PHP你可以讓他們如下

<?php 
$chkbox = $_POST['chk']; 

foreach($chkbox as $a => $b){ 
    echo $chkbox[$a]; 
} 
?> 
+0

Thanx的幫助:) –

0

將每個複選框的name屬性設置爲pr[],如:

echo "<input type='checkbox' class='pr' name='pr[]' value='".$r[7]."'/>"; 

然後,第一個複選框將在$_POST['pr'][0],第二個在$_POST['pr'][1]等等。

+0

您也可以將名稱設置爲'pr [0]'等等,以防你需要知道被檢查的確切複選框。 – maxton

+0

我讀過,名稱屬性在HTML5中已棄用,並且首選使用id或class。 –

+0

總是使用這兩個ID /名稱,除非你不在意即將來臨的10年即6/7/8/9 – Robert

1
<td class='promotetabledata'><input type='checkbox' name='pr[]' value='".$r[7]."'/></td> 

這是PHP代碼,我終於寫信給訪問所有複選框,並對選定的操作執行所需的操作。

<?php 
    $checkbox = $_POST['pr']; 

    foreach($checkbox as $value){ 

      if(isset($checkbox)){ 

      echo '<script>alert("'.$value.'")</script>'; 
      } 
    } 
    ?>