将变量从php转移到js

时间:2012-04-24 00:41:02

标签: php javascript variables

当我试图将变量从php转移到js时,我真的很困惑。 当我尝试使用id来获取价值时,一切都很好 例如:

var name = $("#name").val();

但我的问题是,如果我想转换例如这个变量:

$id = 182938; //the id of the user

到这个变量:

var id;
这个问题可能很愚蠢......对你来说可能很容易,但不适合我:p
我查了一下,在任何地方找到了类似的东西:

<?php
$number = rand();
?>

<script language="javascript">
var num = <?php echo $number ?>
</script>

它与传递值有相同的影响吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

不完全。编码为JSON将确保它是有效的JavaScript文字。

var num = <?php echo json_encode($number) ?>

答案 1 :(得分:0)

代码的作用是:

<?php
    $number = rand();  //assign random number to $number. let's say it's "3"
?>

//then these are printed on the page normally
<script language="javascript">
    var num = <?php echo $number ?> //the $number is echoed at this position
</script>

然后浏览器收到:

<script language="javascript">
    var num = 3;
</script>

答案 2 :(得分:-1)

你必须生成语法上的VALID javascript。 PHP可以将文本回显到它生成的页面的任何部分,但这并不一定意味着它实际上是可用的文本。在您的情况下,您忘记了;,因此生成的javascript实际上是语法错误:

var num = <?php echo $number ?>;
                               ^--- missing

输出文字时会发生同样的事情。考虑将某人的姓名存储到变量中的位置:

<?php
   $name = "Miles O'Brien"; // <-- note the single quote
?>
<script>
   var name = <? php echo $name ?>;
</script>

这个 LOOKS 确定,但它实际上会产生另一个语法错误:

    var name = Miles O'Brien;

整个字符串周围没有引号,嵌入的引号将在javascript中启动一个字符串,导致JS解释器抱怨未定义的变量“Miles”,未定义的变量“O”和未终止的字符串文字。 / p>

相反,PHP应该是:

 var name = <? echo json_encode($name) ?>;

JSON封装可确保您嵌入语法上有效的Javascript值。