在 PHP 块中使用 Javascript 设置 HTML 文本框的值(使用 echo)


Setting the value of an HTML textbox using Javascript inside of a PHP block (using echo)

我正在尝试根据选择的HTML选择框选项运行MySQL查询,然后获取查询结果并将其输出到HTML文本框中,但无济于事。我正在使用带有超全局 $_GET 的 switch 语句。我正在尝试在 PHP 块(使用 echo(中使用 Javascript 设置 HTML 文本框的值,但它不起作用。文本框未填充(仍为空(。这可能是因为 PHP 在文本框初始化之前正在运行,还是我缺少其他内容?我确定数据库登录信息是正确的,并且查询实际上有效。代码如下。

<?php
---db login info here---
switch($_GET['string'])
{
    case "another string":
        $query = mysql_query("SELECT field1 FROM table1 WHERE id = '1'");
        $row = mysql_fetch_row($query);
        break;
}
echo "<script type='text/javascript'>";
echo "document.getElementById('textbox').value = '$row[0]'";
echo "</script>";   
?>

几件事:

  1. 当您在浏览器中访问站点时,您可以通过检查站点的"源代码"来验证 PHP 部分是否正常工作(<script>部分是否看起来像您期望的那样?

  2. 请注意,"文本框"必须比此脚本更早出现在文档中,如所写

  3. 如果所讨论的元素是 <textarea> ,它没有 value 属性,您需要使用 innerHTML 或类似属性。

  4. 如何完成此操作可能存在更大的问题(这是ajax吗?所有请求?为什么不简单地用php编写文本框?(

编辑,用PHP做

如果是你的代码编写了<input>,那么首先用php来做(那么你可以获得没有js依赖的额外好处:

switch($_GET['string'])
{
    case "another string":
        $query = mysql_query("SELECT field1 FROM table1 WHERE id = '1'");
        $row = mysql_fetch_row($query);
        $textboxValue = $row[0];
        break;
}
?>
// ...
<input type="text" name="foo" id="textbox" value="<?php echo $textboxValue;?>" />