0

我在根据另一个选择的选项更改选择的选项时遇到问题,下面是有效的代码:

dropdown2.innerHTML = "<?php echo($SQLFormElements->GetColumnAsOptions('SELECT `field2` FROM `table2` WHERE `field1` = \'8\' ')); ?>";

解释:

我有两个数据库表:table1table2. table1field1. table2有字段field2field1SQLFormElements是一个 php 文件,它根据 mysql 查询回显 html 元素,在这种情况下,是 select 元素的选项。dropdown1包含field1值。dropdown2field2根据 的值显示值field1,即 的选定项dropdown1

无论如何,上面的代码工作正常,但是我已经硬编码而不是获取值,因为当我做这样的事情时:

var selectedItem = document.getElementById("ddField1");
dropdown2.innerHTML = "<?php echo($SQLFormElements->GetColumnAsOptions('SELECT `field2` FROM `table2` WHERE `field1` = \'" + selectedItem + "\' ')); ?>";

它不起作用,知道为什么!我有点难过。提醒一下,第一个代码片段有效。

我尝试了以下方法:

  • 将变量解析为整数(我表中的 field1 是整数类型)
  • 省略 where 子句中的引号
  • 省略引号但对 where 子句中的值进行硬编码有效
4

2 回答 2

1

我认为您错过了 selectedItem 中的值。

var selectedItem = document.getElementById("ddField1");将其更改为var selectedItem = document.getElementById("ddField1").value;

于 2013-02-25T14:03:59.770 回答
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 代码不适合旧浏览器 \ 向后功能

于 2013-02-25T23:23:36.727 回答