我试图创建一个网页,有由Oracle数据库查询提供的值填充的下拉框。我使用的代码是什么对我以前工作时查询Sql Server,但修改为Oracle。这确实超出了我的能力范围——我更像是一个系统管理员,而不是开发人员:但这只是没有其他人做这件事的情况之一。这是查询Oracle的PHP代码(var_dump是用来验证数组是否填充了Oracle的值):
**<?php
// Create connection to Oracle
$conn = oci_pconnect("user", "password", "//oracleserver/prod");
$query = 'SELECT DISTINCT terms_cd from terms ORDER BY terms_cd';
$stid = oci_parse($conn, $query);
$r = oci_execute($stid);
$j = 0;
while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS+OCI_ASSOC))
{
foreach ($row as $item) {
$termscode[] = array("id" => $j, "val" => $item);
$j++;
}
}
//Verify Array
//var_dump($termscode);
$jsonTermsCode = json_encode($termscode);
?>**
这是JavaScript:
<script type='text/javascript'>
<?php>
echo "var termscode = $jsonTermsCode; n";
?>
function loadTermsCode()
{
var select1 = document.getElementById("termscodeSelect");
for(var i = 0; i < termscode.length; i++)
{
var Terms = document.createElement("option");
//Terms.text = termscode[i];
//Select1.add(Terms, null);
select1.options[i] = new Option(termscode[i].val, termscode[i].id);
echo select1.options[i]
}
}
</script>
这是HTML:
<body onload="loadFunc(), loadTermsCode()">
<form id="f" method="post" name="VendorChange" >
<!--Div 1-->
<div id="container">
<!--Div 2-->
<div id="divTabContainer">
<fieldset>
<table>
<td class="dept">
Terms Code:
</td>
</tr>
<tr>
<td>
<select id="termscodeSelect" name="TermCode" >
</select>
</td>
</tr>
</table>
</fieldset>
</div>
</form>
</body>
下拉列表没有填充——我一直在为此绞尽脑汁,就是不知道为什么。了解吗?
javascript中的"echo"一定会导致错误。要在javascript中"echo"一些东西,你需要"document.Write()"。
除此之外,你已经注释掉的代码似乎是正确的基于http://www.w3schools.com/jsref/met_select_add.asp除了索引是NULL。如果你不想给索引赋值,直接忽略索引
我指的是代码:
var Terms = document.createElement("option");
Terms.text = termscode[i];
Select1.add(Terms);