我的php代码的值为2位数字,例如
$var1 = 16;
$var2 = 24;
$var3 = 31;
但是当我使用这些值并将其放入我的 JavaScript 中时,
例如var var1 = <?php echo $var1; ?>
var var2 = <?php echo $var2; ?>
var var3 = <?php echo $var3; ?>
console.log(var1+"-"+var2+"-"+var3)
输出是**1-2-3**
而不是**16-24-31**
它只得到我什至放window.onload
函数的第一个数字,以确保在脚本之前先加载 PHP 和 HTML。
该问题是由两件事引起的:
- 您不会用分号结束 JS 语句。
- PHP 如果它跟在结束标记
?>
后面,则会吃掉一个换行符。
这意味着您的JS代码最终类似于
var var1 = 16var var2 = 24var3 = 31
这不是你所期望的(实际上上面是一个语法错误;如果代码在你的情况下编译,这可能是示例与运行的代码不相同的结果)。
正确的解决方案是用分号终止每个语句:
var var1 = <?php echo $var1; ?>;
var var2 = <?php echo $var2; ?>;
var var3 = <?php echo $var3; ?>;
同样有效的(尽管我建议避免它)是在每个任务后放置一些额外的换行符,让 ASI 接管:
var var1 = <?php echo $var1; ?>
var var2 = <?php echo $var2; ?>
var var3 = <?php echo $var3; ?>
顺便说一句,在这种情况下,直接echo
变量是有效的,因为它们是数字。一般来说,将变量传输到JS的正确方法是通过json_encode
:
var var1 = <?php echo json_encode($var1); ?>;
试试这个: 它对我有用
<?php
$var1 = 16;
$var2 = 24;
$var3 = 31;
?>
<script>
var var1 = <?php echo $var1; ?>;
var var2 = <?php echo $var2; ?>;
var var3 = <?php echo $var3; ?>;
alert(var1+"-"+var2+"-"+var3);
console.log(var1+"-"+var2+"-"+var3);
</script>