0

我有 2 个 php 页面,第 1 页包含(html + javascript + php 代码),第 2 页仅包含 php 代码。

因此,在 page1 内,有一个下拉列表包含许多值,如果我选择其中一个,AJAX 代码将值传递给 page2.php,如下所示:

如果我用下拉替换复选框输入,脚本可以完美运行,但在这种情况下,它不起作用。

目的是将 page2 的结果显示为 page1 上的复选框。任何想法?

Page1.php:

HTML 代码:

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

阿贾克斯代码:

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

页面2.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> 
4

1 回答 1

0

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

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

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 "&"
于 2013-02-15T14:32:39.023 回答