在AJAX响应中返回多个复选框

时间:2013-02-15 14:25:28

标签: php ajax checkbox responsetext

我有2个php页面,Page1包含(html + javascript + php代码),page2只包含php代码。

所以,在page1里面,一个下拉列表包含很多值,如果我选择其中一个,那么AJAX代码就像这样得到page2.php:

如果我用下拉列表替换复选框输入,脚本可以正常工作,但在这种情况下,它不起作用。

目的是将page2的结果显示为page1上的复选框。 有什么想法吗?

page1.php中:

HTML CODE:

  <select onChange="getdids(this.value)" id="groupSelect" name="groupSelect" >
        <option value="0">xxx</option>
            <option value="1">yyy</option>
            <option value="2">zzz</option>
            <option value="3">vvv</option>
  </select> 

  <input type="checkbox" id="alldids" name="alldids" value="0">did<br>

AJAX代码:

  <script>
  function getdids(str)
  {
    if (str=="")
      {
       document.getElementById("alldids").innerHTML="";
       return;
      }
    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("alldids").innerHTML=xmlhttp.responseText;
       }
    }
  xmlhttp.open("GET","page1.php?groupName="+str,true);
  xmlhttp.send();
 }


 </script>

使page2.php:

PHP代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Get dids</title>
    </head>

    <?php
    require_once('../functions.php');
    include('../variables.php');
    $didGrpName=$_GET['groupName'];
    $didGrpId=GroupId($table_groups,$didGrpName);
    $x=array();
    $x=showDidOfGroup($didGrpId);

    $i=1;
    while($i <= $x[$i]){ ?>
    <input type="checkbox" value="<?php echo $x[$i]; ?>"><?php echo $x[$i]; ?><br>
    <?php $i++; } ?>

    <body>
    </body>
    </html> 

1 个答案:

答案 0 :(得分:0)

您永远不会为您的复选框调用getdids,并且一组复选框的值更复杂,以确定(非多个)选择元素的值。

从复选框组构建application / x-www-url-form编码数据的算法是:

Create an empty array
For each "checkbox" in "group of checkboxes with same name":
    if checkbox.checked:
        append encodeURIComponent(name) + "=" + encodeURIComponent(checkbox.value) to array
JOIN array with "&"