Javascript 移动的数据未在php提交中发送

Javascript 移动的数据未在php提交中发送,javascript,php,Javascript,Php,我使用以下函数在两个选择字段之间移动数据: <script language="javascript"> function move(tbFrom, tbTo) { var arrFrom = new Array(); var arrTo = new Array(); var arrLU = new Array(); var i; for (i = 0; i < tbTo.options.length; i++) { arrLU[tbTo.options[

我使用以下函数在两个选择字段之间移动数据:

<script language="javascript"> 
function move(tbFrom, tbTo) 
{
 var arrFrom = new Array(); var arrTo = new Array(); 
 var arrLU = new Array();
 var i;
 for (i = 0; i < tbTo.options.length; i++) 
 {
  arrLU[tbTo.options[i].text] = tbTo.options[i].value;
  arrTo[i] = tbTo.options[i].text;
 }
 var fLength = 0;
 var tLength = arrTo.length;
 for(i = 0; i < tbFrom.options.length; i++) 
 {
  arrLU[tbFrom.options[i].text] = tbFrom.options[i].value;
  if (tbFrom.options[i].selected && tbFrom.options[i].value != "") 
  {
   arrTo[tLength] = tbFrom.options[i].text;
   tLength++;
  }
  else 
  {
   arrFrom[fLength] = tbFrom.options[i].text;
   fLength++;
  }
}

tbFrom.length = 0;
tbTo.length = 0;
var ii;

for(ii = 0; ii < arrFrom.length; ii++) 
{
  var no = new Option();
  no.value = arrLU[arrFrom[ii]];
  no.text = arrFrom[ii];
  tbFrom[ii] = no;
}

for(ii = 0; ii < arrTo.length; ii++) 
{
 var no = new Option();
 no.value = arrLU[arrTo[ii]];
 no.text = arrTo[ii];
 tbTo[ii] = no;
}
}

</script>

我收到通知:未定义索引。只在这个领域。其他一切都很好。我知道我可以使用isset函数来避免空值或空值。然而,我认为最大的问题是“newusrdgreq”字段没有将添加和删除的值正确地附加到该字段,但我不明白为什么。任何帮助都将不胜感激。

这里的问题是,SELECT只有一个值,即使您将其设置为多个-用户必须手动选择所有值,所以基本上选择框中的所有项目都不会发送回服务器

要解决此问题,您可以有两个选项:

  • 创建隐藏字段,您将从选择框复制数据
  • 提交前-选择“选择”中的所有值

  • 如果不能使用val()进行标记,我认为可以将多个值标记为选中值<代码>$(“选择”).find(“选项[value=1],选项[value=2]).prop(“已选择”,true)@IlyaBursov我尝试了第二项,并在选择中选择了所有值,但电子邮件仅包含最后一个值。还有什么想法吗?我把select转换成了一个数组,它在php中完美地打印出来。只需扩展数组,使其发送电子邮件中的每个值
    <?php
    mysql_select_db($database_UARData, $UARData);
    $query_DistributionGroups = "SELECT distgrp.distgrpnme FROM distgrp";
    $DistributionGroups = mysql_query($query_DistributionGroups, $UARData) or die(mysql_error());
    $row_DistributionGroups = mysql_fetch_assoc($DistributionGroups);
    $totalRows_DistributionGroups = mysql_num_rows($DistributionGroups);
    
    ?>
    
              <select name="newusrdgavail" size="10" id="newusrdgavail" style="width:300px">
                <?php
    do {  
    ?>
                <option value="<?php echo $row_DistributionGroups['distgrpnme']?>"><?php echo $row_DistributionGroups['distgrpnme']?></option>
                <?php
    } while ($row_DistributionGroups = mysql_fetch_assoc($DistributionGroups));
      $rows = mysql_num_rows($DistributionGroups);
      if($rows > 0) {
          mysql_data_seek($DistributionGroups, 0);
          $row_DistributionGroups = mysql_fetch_assoc($DistributionGroups);
      }
    ?>
              </select>
            </label></td>
            <td align="center" bgcolor="#CCCCCC"><p>
              <input type="button" name="newusrdgadd" id="newusrdgadd" value="Add" onclick="move(newusrdgavail,newusrdgreq)"/>
            </p>
              <p>
                <input type="button" name="newusrdgremove" id="newusrdgremove" value="Remove" onclick="move(newusrdgreq,newusrdgavail)"/>
              </p></td>
            <td bgcolor="#CCCCCC"><label>
              <select name="newusrdgreq" size="10" multiple="multiple" id="newusrdgreq" style="width:300px">
              </select>
            </label></td>
    
    $newusrdgreq = $_POST['newusrdgreq'];
    $email_message .= "Required Email Distribution Groups: ".$newusrdgreq."\n";