我有一个带有一些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!";
?>
答案 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个选择:
将文件重命名为script.js.php,并在文件的开头指定内容类型,如下所示:
&lt;?php header('content-type:text / javascript'); ?&GT;
干杯!