【问题标题】:How To Pass a PHP Variable To Javascript [duplicate]如何将 PHP 变量传递给 Javascript [重复]
【发布时间】:2011-01-20 01:07:15
【问题描述】:
<html>
<head>
<?php
$your_name=$_POST['name'];
?>
<script language="javascript">
function fash(at1,at2)
{
    alert(at1+at2);
}
</script>
</head>
<body>
<?php
echo $your_name;
echo '<script language="javascript">fash("the key is: "+'<?php echo $your_name; ?>');</script>';
?>
</body>
</html>

输出是:

关键是:未定义

我该如何解决这个问题?

【问题讨论】:

    标签: php javascript


    【解决方案1】:

    这不可能是正确的代码,它有语法错误(例如,您在另一个 &lt;?php 块中有一个 &lt;?php 块)。可能输出脚本标签的行应该是这样的:

    echo "<script language=\"javascript\">fash(\"the key is: $your_name\");</script>";
    

    或者像这样:

    ?>
    <script language="javascript">fash("the key is: <?php echo $your_name; ?>");</script>
    <?php
    

    它会输出“key is: testnameundefined”(如果$your_nametestname)。 undefined 来自您定义 fash 以获取两个参数并将它们连接起来,但您只传递了一个; at2 未定义

    【讨论】:

    • 如果 $your_name 包含双引号,这将中断。最好事先做 'var somevar = ;` 之类的事情,然后改用 somevar。
    • @Marc 好点;某种卫生总是一个好主意,只是直接输出表单变量不会很好
    【解决方案2】:

    很难看到所有编辑发生了什么,但是当您已经在 php 标签内时,您似乎正在使用 &lt;?php ?&gt; 标签。

    只是回显并删除内部 &lt;?php ?&gt; 应该可以解决您的部分问题,尽管您的 javascript 函数似乎也需要 2 个参数而不是一个(给出的文本)。

    【讨论】:

      【解决方案3】:

      您只将 一个 参数传递给您的函数:

      fash("the key is: "+'php_value');
      

      "the key is: " 和你的 php 字符串在函数被调用之前连接起来。

      试试

      fash("the key is: ", 'php_value');
      

      改为。

      【讨论】:

      • 感谢您的帮助!它有效。
      【解决方案4】:

      函数fash 有两个参数。你只是通过了一个。

      用途:

      fash("the key is: ", "$your_name");
      

      这将在连接这两个字符串后正确显示警报。此处不需要 PHP 标记,因为您已经在 PHP 代码块中。

      【讨论】:

        【解决方案5】:

        因为在您对fash 的定义中,您采用两个参数并将它们连接在那里,但在您的回显脚本中,您将它们连接在那里,因此只传递一个参数。所以at2 作为未定义传递。显然你的名字也是空白的。

        【讨论】:

          【解决方案6】:
          echo '<script language="javascript">fash("the key is: "+'<?php echo $your_name; ?>');</script>';
          

          看起来您在 php 回显中回显 php 代码。尝试将其更改为:

          echo '<script language="javascript">fash("the key is: "+'$your_name;');</script>';
          

          不确定这是否能解决整个问题,但我很确定您不能在回声中回显新的回声。

          【讨论】:

            猜你喜欢
            • 2014-01-11
            • 2016-02-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多