从 PHP 到 JavaScript 的传输值不一致


trasfering value from php to javascript inconsistent

我的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。

该问题是由两件事引起的:

  1. 您不会用分号结束 JS 语句。
  2. 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>