繁体   English   中英

将变量从php传输到js

[英]transfer a Variable from php to js

当我尝试将变量从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>

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

谢谢!!

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

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

代码的作用是:

<?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>

您必须生成语法有效的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>

看起来不错,但实际上会生成另一个语法错误:

    var name = Miles O'Brien;

整个字符串之间没有引号,并且嵌入式引号将在javascript中启动一个字符串,从而导致JS解释器抱怨未定义的变量“ Miles”,未定义的变量“ O”和未终止的字符串文字。

相反,PHP应该是:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM