2013-07-13 56 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>'; 
      } 
    } 
    ?>