【问题标题】:How to execute JavaScript in PHP and vice versa? [duplicate]如何在 PHP 中执行 JavaScript,反之亦然? [复制]
【发布时间】:2018-05-03 14:05:17
【问题描述】:

我有一个 PHP 代码,我在里面使用了一些 JavaScript 代码,只是为了提醒我在 PHP 代码中定义的一些文本和一个变量。

如何在我的 JavaScript 代码中使用我的 PHP 变量来显示它并发出警报?

代码:

<?php 
$a="Jhon";
$b=true;
if($b)
{
echo "
<script type=\"text/javascript\">
     alert('Hello'.$jhon);
</script>
";
}
?>

【问题讨论】:

  • 除了带有' 标记的错误之外应该可以工作 -> alert('Hello $jhon'); - 您已经在使用双引号字符串,因此您不需要将连接放入其中;这只是破坏了嵌入式 JS(查看源代码会显示:alert('Hello'Jhon); ...实际上 PHP 中的变量是 $a 所以将所有 $jhon 实例替换为 $a 以及

标签: javascript php html css ajax


【解决方案1】:
<?php 
  $a="Jhon";
  $b=true;
?>

<script type="text/javascript">
     if(<?php echo $b; ?>){
       alert('Hello<?php echo $b; ?>');
     }
</script>

【讨论】:

  • 变量被称为$a 而不是$jhon
  • 如果$a 包含新行或' 字符,则会中断。
  • 为什么在 JS 中出现这个条件?
  • 你为什么要逃避type=
  • @D.Pardal 这是将 PHP 变量传递给 Javascript 和用法的示例。 PHP 在 if 语句中添加条件,然后 js 使用这个值。
【解决方案2】:

将警报包装到函数并在 onload 时调用它,例如:

<?php 
$a="Jhon";
$b=true;
if($b)
{
echo "
<script type=\"text/javascript\">
    function callAlert(){
     alert('Hello$a');
     }
</script>
";
}
?>
<body onload="callAlert()">
</body>

【讨论】:

    【解决方案3】:

    用于连接字符串的 JavaScript 运算符是 +,而不是 .。另外,$a 需要用引号引起来,否则 JS 会认为 $a 的值是一个标识符。试试这个:

    echo "
    <script>
        alert('Hello, ' + '$a')
    </script>
    ";
    

    另外,$jhon 是什么?

    【讨论】:

    • 根本不需要连接 - 它只是一个字符串中的 PHP 变量,所以 alert('Hello {$a}'); 应该这样做。
    【解决方案4】:

    有多种方法可以做到这一点: 一:

    <?php
    $a="Jhon";
    $b=true;
    if($b){ ?>
    
    <script type="text/javascript">
        alert('Hello <?=$a?>');
    </script>
    
    <?php } ?>
    

    两个:

    <?php
    $a="Jhon";
    $b=true;
    
    if($b):?>
    <script type="text/javascript">
        alert('Hello <?=$a?>');
    </script>
    <?php endif;?>
    

    如果你愿意,我可以给你更多 我希望这会有所帮助

    【讨论】:

    • 这两个选项都不安全,如果$a 包含' 或换行符,则会中断。
    • 还有一点,要使用php短标签,必须启用,否则使用alert('Hello ');
    • 没有。 &lt;?= 始终处于启用状态,并且与仅涵盖 &lt;?short_tags 指令无关。
    • php 代码或任何代码因某些字符而损坏,问题不在于如何使字符安全。如果出现中断,请使用适当的函数对文本进行编码或解码。当然放垃圾会坏的
    • @Quentin 请仔细阅读问题或 cmets,否则您给出的 cmets 错误。关于 short_tags 的评论是在我的回答中添加的,而不是对您的 cmets。
    猜你喜欢
    • 2013-08-16
    • 2010-12-30
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多