从JavaScript中回应PHP变量?

时间:2010-01-04 09:36:29

标签: php javascript html

我有一个带有一些JavaScript代码的PHP页面,但下面的JavaScript代码似乎不起作用,或者我可能已经离开了!

我正在尝试这样的事情:

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

我也试过这个,但它只提醒BLANK警告框:

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

我在这里想错了吗?

更新

一些PHP代码:

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

6 个答案:

答案 0 :(得分:9)

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

测试一下:

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

OR

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

答案 1 :(得分:5)

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';
?>

不会

答案 2 :(得分:3)

使用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>

答案 3 :(得分:0)

您使用@$_POST表示您已收到(或期待)错误 - 请检查生成的来源,以查看该值是否输出正确。否则document.getElementById将失败,您将无法获得输出。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

如果你的扩展名是js,php将无法在该文件中使用。

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

所以你有3个选择:

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

    &lt;?php header('content-type:text / javascript'); ?&GT;

干杯!