将选择列表传递给php页面

时间:2013-03-08 21:03:09

标签: php javascript

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

  

[object 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();

2 个答案:

答案 0 :(得分: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”。

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

答案 1 :(得分:0)

你可以序列化html值

php正在寻找的是一系列值 即。

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

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

现在最好的办法。我不知道使用vanilla javascript。你可以遍历所有选定的值并构建自己的查询字符串吗?