2

我试图通过 Ajax 将多选列表框中的值传递给 PHP。我在 Jquery 和 JSON 中看到了一些示例,但是我试图用普通的旧 javascript (Ajax) 来完成这个。这是我到目前为止的内容(简化):

阿贾克斯:

function chooseMultiEmps(str)
  {
    var mEmpList2 = document.getElementById('mEmpList'); //values from the multi listbox
    for (var i = 0; i < mEmpList2.options.length; i++) //loop through the values
    var mEmpList = mEmpList2.options[i].value;  //create a variable to pass in string
    if (window.XMLHttpRequest)
    {
       xmlhttp = new XMLHttpRequest();
    }
    else
    {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function()
   {
   if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
   {
      //specific selection text
      document.getElementById('info').innerHTML = xmlhttp.responseText; 
   }
  }
  xmlhttp.open("POST", "myPage.php", true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  var queryString = "&mEmpList=" + mEmpList; //query string should have multiple values
  xmlhttp.send(queryString);
}

我可以在单个消息框中运行alert(mEmpList)并获取每个值,但是当我检索并回显 时$_POST['mEmpList'],我只得到第一个值。此外,当 I 时alert(queryString),我只得到一个值。

我想我需要创建一个逗号分隔的数组,然后通过查询字符串传递它。从那里,我可以使用 PHP implode/explode 功能来分离这些值。任何帮助将不胜感激。

4

1 回答 1

2

这里:

for (var i = 0; i < mEmpList2.options.length; i++) //loop through the values
var mEmpList = mEmpList2.options[i].value;  //create a variable to pass in string

您一遍又一遍地重新定义您的 mEmpList,这意味着只发送最后一个值

你可以这样做:

var mEmpList = '';
for (var i = 0; i < mEmpList2.options.length; i++) { //loop through the values
    mEmpList = mEmpList +','+ mEmpList2.options[i].value;  //create a variable to pass in string
}

queryString的也不行,没必要&

var queryString = "mEmpList=" + mEmpList;

这样,最后你将拥有所有用逗号分隔的值,

PHP您可以使用explode 循环每个值:

<?php
    $string = explode(',' $_GET['mEmpList']);
    for($i=1; $i<count($string); $i++){
        echo $string[$i]."<br />";
    }
?>
于 2012-09-03T06:30:39.473 回答