JavaScript中的多个引号存在的问题

时间:2013-02-25 13:59:26

标签: javascript quotes

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

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

解释

我有两个数据库表:table1table2table1field1table2包含字段field2field1SQLFormElements是一个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 + "\' ')); ?>";

它不起作用,任何想法为什么!?我有点难过。提醒一下,第一个代码段可行。

我尝试了以下内容:

  • 将变量解析为Integer(我的表中的field1是整数类型)
  • 在where子句
  • 中省略引号
  • 省略引号但硬编码where子句中的值

2 个答案:

答案 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代码不适合旧浏览器\后向功能