0

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

4

2 回答 2

1

问题是两件事的结果:

  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); ?>;
于 2013-09-24T09:41:57.230 回答
0

试试这个:它对我有用

<?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>
于 2013-09-24T09:28:00.497 回答