任何人都可以帮助我理解原因:
<?php $x = 'b'; ?>
<script> var v=<?php echo $x;?>; alert(v);</script>
没有弹出警报,而
<?php $x = '3'; ?>
<script> var v=<?php echo $x;?>; alert(v);</script>
会弹出带有文字3的警告吗?
答案 0 :(得分:7)
您在脚本元素中回显了一个字母b
,结果是:
<script> var v=b; alert(v);</script>
就JavaScript而言,这是一个标识符,而不是字符串。由于未定义JavaScript变量b
,因此会发生错误,并且不会发出任何警报。
当你回应3:
<script> var v=3; alert(v);</script>
JavaScript看到的是一个数字3,它没有分配和警告的问题。
答案 1 :(得分:3)
始终查看渲染的输出。
<script> var v = 3; alert(v); </script>
VS
<script> var v = b; alert(v); </script>
要将PHP变量可靠地传递给JavaScript,请使用json_encode
答案 2 :(得分:1)
尝试:
<?php $x = '3'; ?>
<script> var v='<?php echo $x;?>'; alert(v);</script>
答案 3 :(得分:1)
基本上,PHP代码在页面加载之前在服务器端运行,并且在页面中的脚本加载后Javascript开始执行。
根据您的代码
<?php $x = 'b'; ?>
<script> var v=<?php echo $x;?>; alert(v);</script>
当在服务器端解析该代码时,php值将填充在脚本标记中。
就像
<script> var v=b; alert(v);</script>
现在在客户端呈现页面时。执行此行后,javascript开始查看变量b。就PHP而言,它是一个字符串,但就javascript而言,它是一个变量,因为它没有用双引号括起来。
由于javascript没有找到任何名为b的变量,因此抛出b是未定义的错误。
现在谈到数字:
<?php $x = '3'; ?>
<script> var v=<?php echo $x;?>; alert(v);</script>
在客户端中,这将呈现为
<script> var v=3; alert(v);</script>
现在因为它只是一个数字而不是一个变量。 Javascript不会抛出任何错误。
如果你想让字符串在javascript中工作,那么
在php变量
中添加b的引号 <?php $x = '"b"'; ?>
<script> var v=<?php echo $x;?>; alert(v);</script>
现在即使PHP字符串也会提供警报
答案 4 :(得分:0)
您生成的javscript缺少封闭引号或字面值。因此,分配var v=...
会遇到错误,除非指定的值是一个数字。
使用
<script> var v="<?php echo $x;?>"; alert(v);</script>
而不是查看所有输出(但要注意$x
中的双引号)。