将PHP数组输入到Javascript数组/下拉列表中


Feeding a PHP array into a Javascript Array/Drop Down

我试图创建一个网页,有由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);