0

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

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

谢谢!!

4

3 回答 3

1

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

var num = <?php echo json_encode($number) ?>
于 2012-04-24T00:42:46.730 回答
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>
于 2012-04-24T00:43:46.507 回答
-1

您必须生成语法上有效的 javascript。PHP 可以将文本回显到它生成的页面的任何部分,但这并不一定意味着它实际上是可用的文本。在您的情况下,您忘记了 a ;,因此您生成的 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) ?>;

The JSON encapsulation guarantees that you're embedding syntactically valid Javascript values.

于 2012-04-24T00:51:06.613 回答