1

我有一个带有选择标签的表单;从下拉列表中选择项目时,其余的表单字段应相应填写。请注意,所有表单数据均来自 mysql 数据库。下面是我的代码:

    <script language="javascript" type="text/javascript">
            function populateData($id)
            {
                alert('in populateData');
                y = document.getElementById("selectCard");
                document.getElementById("to_address").value = to_address[y.selectedIndex];
                document.getElementById("subject").value = subject[y.selectedIndex];
                document.getElementById("email_content").value = email_content[y.selectedIndex];
            }
    </script>
    <body>
        <?php
            mysql_connect("localhost", "someUser", "password") or die("Connection Failed");
            mysql_select_db("mns")or die("Connection Failed");
            $query = "SELECT * FROM table";
            $result = mysql_query($query);
        ?>              
        <select id="selectCard" class="dropdown" onchange="populateData($id)">
            <?php
                while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
            ?>  
            <option value="<?php echo $line['source_name'];?>"> <?php echo $line['source_name'];?>
            <?php
                $id = $line['source_id'];           
                $source_name = $line['source_name'];
                $source_email = $line['source_email'];
                $phone_no = $line['source_id'];
                $disteller_function = $line['disteller_function'];
                }
            ?>
        </select>               
        <P><INPUT ID="to_address" TYPE="TEXT" NAME="to_address" SIZE="25"></P>    
        <P><INPUT ID="subject" TYPE="TEXT" NAME="subject" SIZE="25"></P>         
        <P><INPUT ID="email_content" TYPE="TEXT" NAME="email_content" SIZE="500"></P>         
        <P><INPUT TYPE="SUBMIT" VALUE="Submit" NAME="B1"></P>                       
    </body>

当我将'$id' 作为参数传递时,'populateData($id)' 函数不会被调用。当我删除参数时,代码可以工作,但我在其余的表单字段中得到'undefined'。

任何帮助深表感谢。

七无

4

2 回答 2

2

首先,您将参数 $id 传递给似乎很奇怪,populateData()因为您没有在该函数内的任何地方使用它。也许您应该重新检查您的代码,看看它是否与您的设计相匹配,您真正想要做什么以及应该如何完成。

您的调用不起作用的原因是 PHP 变量必须以 PHP 变量开头,$但 Javascript 变量不能,最重要的是:您不能只在客户端 Javascript 代码上引用服务器端 PHP 脚本变量。您需要让您的 PHP 服务器端脚本回显(输出)您的 PHP 脚本变量的值$id作为用户浏览器将接收并运行客户端的 HTML + Javascript 代码的函数调用的参数id(可以在没有单引号如果$id是一个数字,你想把它作为一个数值传递给populateData())。

只需从函数声明的参数中删除 $$id并将其设置在单引号内的 PHP 标记之间,以将其作为字符串参数回显给在 HTML 输出上调用的函数:

function populateData(id){
...
}
...
<select id="selectCard" class="dropdown" onchange="populateData('<?php echo $id; ?>')">

此外,我建议您使用在浏览器中打开的 Javascript 控制台进行测试(即 Web 开发人员 -> Web 控制台或 Firefox 中的 CTRL+SHIFT+K),这可以帮助您即时跟踪此类未来的错误。

于 2012-11-05T13:18:58.853 回答
0

@elcodedocle,首先感谢您调查它。虽然上述解决方案对我不起作用,但我通过以下方式完成了它,

function populateData(id){
...
}
...
<select id="selectCard" class="dropdown" onchange="populateData(this.value)">

将所有参数附加到值标签。你是对的,不能将 php 变量传递给 javascript 函数。

再次感谢,

七无

于 2012-11-07T05:01:08.857 回答