我有一个带有select标签的表单;从表格字段的下拉列表中选择一个项目应该相应地填充。注意所有表单数据都来自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'。
非常感谢任何帮助。
Nanashi
答案 0 :(得分:2)
首先,将参数$ id传递给populateData()
似乎很奇怪,因为你没有在该函数内的任何地方使用它。也许你应该重新检查你的代码,看看它是否符合你的设计,你真正想做什么以及应该如何做。
你的调用不起作用的原因是PHP变量必须以$
开头,但Javascript变量不能,最重要的是:你不能只在客户端引用服务器端PHP脚本变量Javascript代码。您需要让PHP服务器端脚本在用户浏览器将接收的HTML + Javascript代码的函数调用上回显(输出)PHP脚本变量$id
的值作为参数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),这可以帮助您即时跟踪此类错误。
答案 1 :(得分:0)
@elcodedocle,首先感谢您对此进行调查。虽然上面的解决方案对我不起作用,但是按照以下方式完成了它,
function populateData(id){
...
}
...
<select id="selectCard" class="dropdown" onchange="populateData(this.value)">
将所有参数附加到值标记。而你是对的,不能将php变量传递给javascript函数。
再次感谢,
Nanashi