我目前正在尝试将选择列表(整个列表)传递到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();
答案 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。你可以遍历所有选定的值并构建自己的查询字符串吗?