1

我目前正在尝试将选择列表(整个列表)传递到 php 页面并从列表中获取各个值以执行动态 sql 查询。我传入了 selectItems,但是当我执行回显时,我得到了

[对象 HTMLSelectElement]

我也尝试过传入 selectItems.value,但只传入了 3 个列表项之一。我搜索了过去一天,但没有取得太大成功。我不太确定如何处理这个问题。任何帮助将不胜感激。

当前选择列表如下

    <select multiple name="selectItems" size="6" id="selectItems">
    <option value="value1" selected="selected">value1</option>
    <option value="value2" >value2</option>
    <option value="value3" >value3</option>
    </select>

    <input type=button id="opener" value='Clickme' onclick="showTable(selectItems, 'getquery.php')">

下面是 showtable 函数的一个片段,我基本上是在尝试传递列表(用 q 表示)和页面的位置。

xmlhttp.open("GET",page+"?q="+str,true);
xmlhttp.send();
4

2 回答 2

2

您最初的 onclick 方法一开始并没有通过 Select 节点,即使那样 - 您正在将实际节点本身发送到 PHP;不是提取的值。

正如 dm03514 自己所说,您可以以 PHP 数组的形式序列化查询字符串,以便在 PHP 级别更易于管理。

jsFiddle:http: //jsfiddle.net/7dtXs/1/

    <script type="text/javascript">
    function showtables( selectObj, page ) {

        var xmlhttp = new XMLHttpRequest();
        var str = "";

        var AllOptions = selectObj.options;
        var SelectedOptions = selectObj.selectedOptions;

       /**
        *   Iterate through each Object that is selected
        *   From here you can pick out:
        *       - id name
        *       - value
        *   etc, to form a query string 
       **/
       for ( var x = 0; x < AllOptions.length; x++ ) {
           str +=  ( !x ? "" : "&" ) 
                   + AllOptions[x].value + "=" + AllOptions[x].textContent;
       }

      /** 
       *    if apples & shaz.. selected   
       *    str now contains:
       *        &value1=Apples&vsalue2=shazbots
      **/
      console.log( str );

      xmlhttp.open("GET", page + "?" + str, true);
          xmlhttp.send();
      }
  </script>

    <select multiple name="selectItems" size="6" id="selectItems">
        <option value="value1">Value1</option>
        <option value="value2">Value2</option>
        <option value="value3">Value3</option>
    </select>

    <!-- Passing through ID.selectedOptions to function -->
<input type="button" id="opener" value="Clickme" onclick="showtables( document.getElementById('selectItems'), 'getquery.php' );">

此外,您的示例确实有错误引用,不确定这是否只是您的示例或您的代码 - 例如:type=button 应该是 type="button"。

我希望我正确理解了你的问题!:)

于 2013-03-08T22:23:03.563 回答
0

您可以序列化 html 值

php 正在寻找的是一个值数组,即。

http://example.com/?selectItems[]=test&selectItems[]=test1

这将允许您在 php.ini 中以数组的形式访问所有值。

现在至于最好的方法。我不知道使用香草 javascript。您可以遍历所有选定的值并构建自己的查询字符串?

于 2013-03-08T21:05:28.570 回答