繁体   English   中英

从 JavaScript 回显 PHP 变量?

[英]Echo PHP variable from JavaScript?

我也有一个带有一些 JavaScript 代码的 PHP 页面,但是下面的这段 JavaScript 代码似乎不起作用,或者我可能离题了!

我正在尝试这样的事情:

  var areaOption=document.getElementById("<?php echo @$_POST['annonsera_name']?>");
  areaOption.selected=true;

我也试过这个,但它只提醒一个空白的警报框:

    alert (<?php echo $test;?>); // I have tried this with quotes, double-quotes, etc... no luck

我在这里思考完全错误吗?

更新

一些PHP代码:

    <?php 
        $test = "Hello World!";
    ?>

在你的第二个例子中,你在字符串周围缺少引号(所以 H 被解释为一个变量 - 你没有设置)。

测试这个:

alert (<?php echo "'H'";?>);

或者

alert ('<?php echo "H";?>');

PHP 在服务器端运行,Javascript 在客户端运行。

过程是PHP生成将在客户端执行的Javascript。

您应该能够检查仅查看代码生成的 JS。 当然,如果 JS 依赖于一些 PHP 变量,则需要在 JS 输出之前对其进行实例化。

<?php
$test = 'Hello world';
?>
<html>
    <body>
        <script>
            alert('<?php echo $test; ?>');
        </script>
    </body>
</html>

会工作,但

<html>
    <body>
        <script>
            alert('<?php echo $test; ?>');
        </script>
    </body>
</html>
<?php
$test = 'Hello world';
?>

将不会

使用json_encode将一些文本(或任何其他数据类型)转换为 JavaScript 文字。 不要只在回显的字符串周围加上引号——如果字符串中有引号、换行符或反斜杠怎么办? 最好的情况是您的代码失败,最坏的情况是您有一个很大的旧跨站点脚本安全漏洞。

所以,

<?php
    function js($o) {
        echo json_encode($o, JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP);
    }
?>
<script type="text/javascript">
    var areaOption= document.getElementById(<?php js($_POST['annonsera_name']); ?>);
    areaOption.selected= true;
    alert (<?php js('Hello World'); ?>);
</script>

您使用@$_POST表示您收到(或预期)错误 - 检查您生成的源以查看值是否正确输出。 否则document.getElementById将失败,您将得不到任何输出。

 alert("Delete entry <? echo $row['id']; ?> ")

如果您的扩展名是 js,则 php 将无法在该文件中运行。

原因是,php 解析它应该解析的文件。 php 将解析的文件类型使用 AddType 命令(或指令,无论它们被调用)在 httpd.conf 中配置。

所以你有3个选择:

  • 将文件类型 js 添加到 php 将解析的文件列表中(糟糕,非常糟糕)
  • 使脚本内联到一些 php 文件
  • 将文件重命名为script.js.php,并在文件开头指定内容类型,如下所示:

    <?php header( 'content-type: text/javascript' ); ?>

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM