我在根据另一个选项的选项更改选项的选项时遇到问题,下面是有效的代码:
dropdown2.innerHTML = "<?php echo($SQLFormElements->GetColumnAsOptions('SELECT `field2` FROM `table2` WHERE `field1` = \'8\' ')); ?>";
解释
我有两个数据库表:table1
和table2
。 table1
有field1
。 table2
包含字段field2
和field1
。 SQLFormElements
是一个php文件,它回显基于mysql查询的html元素,在本例中是select元素的选项。 dropdown1
包含field1
个值。 dropdown2
应根据field2
的值显示field1
值,即dropdown1
的所选项。
无论如何,上面的代码工作正常,但是我已经硬编码而不是获取值,因为当我做这样的事情时:
var selectedItem = document.getElementById("ddField1");
dropdown2.innerHTML = "<?php echo($SQLFormElements->GetColumnAsOptions('SELECT `field2` FROM `table2` WHERE `field1` = \'" + selectedItem + "\' ')); ?>";
它不起作用,任何想法为什么!?我有点难过。提醒一下,第一个代码段可行。
我尝试了以下内容:
答案 0 :(得分:1)
我认为你错过了selectedItem中的值。
var selectedItem = document.getElementById("ddField1");
将其更改为var selectedItem = document.getElementById("ddField1").value;
答案 1 :(得分:0)
所以@Bergi建议的AJAX方法可以解决这个问题:
这里是:
dropdown1的onchange事件:
onchange="AJAXItemChangeEvent(this.value)"
...
JavaScript函数
function AJAXItemChangeEvent(selectedValue)
{
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
document.getElementById("dropdown2").innerHTML = xmlhttp.responseText;
};
xmlhttp.open("GET","Getter.php?field1=" + selectedValue,true);
xmlhttp.send();
}
...
<强> Getter.php 强>
<?php
mysql_connect("dbhost","username","password");
mysql_select_db("dbname");
$field1 = $_GET["field1"];
$sql = "SELECT field2 FROM table2 WHERE field1 = '".$field1."'";
$result = mysql_query($sql);
echo "<option></option>";
while($row = mysql_fetch_array($result))
{
echo "<option>".$row[0]."</option>";
}
?>
注意强> - 我的ajax代码不适合旧浏览器\后向功能