将变量从 PHP 传递到 Javascript:意外的令牌?

Posted

技术标签:

【中文标题】将变量从 PHP 传递到 Javascript:意外的令牌?【英文标题】:Passing Variable from PHP to Javascript: Unexpected token? 【发布时间】:2016-08-30 17:56:06 【问题描述】:

我的总体目标是将一组数字从 php 传递给 js。我在其他地方看到了只放在 javascript 中的解决方案,所以我一直在尝试。但是,我不断收到错误“Unexpected Token?”当我添加 php.ini 时我检查了 $ztable 实际上是我想要的变量并且它确实存在。以下是我尝试过的三个不同示例,它们都返回了相同的错误。我也尝试了其他几种将变量从 php 获取到 javascript 的方法,但似乎没有一种方法适合我。如果我写的代码有问题,请告诉我,或者如果有另一种简单的方法来传输变量,我很想听听。在我的应用程序中,变量只被传递一次,所以速度不是问题,安全性也不是问题(出于不同的原因)。

<script>
ztable = new array(<?php echo json_encode($ztable); ?>);
....other unrelated code.....
</script>

<script>
var ztable = <?php echo json_encode($ztable); ?>;
....other unrelated code.....
</script>

<script>
var ztable = <?php echo $ztable; ?>;
....other unrelated code.....
</script>

编辑:我没有使用 jQuery,我的 php 代码非常简单,它只是根据用户的输入生成一个数字数组

$ztable = [0.001, 0.003, 0.006, 0.01, 0.02, 0.04, 0.07, 0.11, 0.16, 0.23, 0.31, 0.4, 0.5, 0.4, 0.31, 0.23, 0.16, 0.11, 0.07, 0.01, 0.01, 0.01, , 0.006, 0.003, 0.001];

【问题讨论】:

阅读文档here 也显示你的 php 代码 你在用jquery吗? 使用第二个选项。第三个选项是 PHP 的错误输出,第一个选项是在 JS 中制作数组时不需要使用new。我们能看看$ztable里面有什么吗? 那么生成的JS长什么样子? 【参考方案1】:

我认为您正在寻找类似的东西:

<script type="application/javascript">
    var ztable = JSON.parse(<?php echo json_encode(isset($ztable) ? $ztable : array()); ?>);
    //.... more stuff
</script>

您的示例似乎没有从 javascript 中的字符串转换 json。

如果未定义$ztable,这也提供了一个默认的空数组,这将正常失败。

【讨论】:

当我尝试使用您提供的代码行时,我仍然收到错误“Unexpected Token?”这只是让它一直得到一个 null 数组,即使我知道 $ztable 已设置。但是假设我可以绕过这个错误,这行代码看起来确实很有用。 &lt;?php echo '&lt;pre&gt;' . print_r($ztable, 1) . '&lt;/pre&gt;'; die(); ?&gt; 放在您的 javascript 标记之前,以便在渲染前立即检查输出。如果您遇到奇怪的变量问题,请始终在调用输出之前立即检查输出以排除其他影响。如果您在代码的其他地方通过引用传递,这也可能导致难以调试的问题。【参考方案2】:

第二个例子工作得很好。这行得通,我认为这是您可能想要做的。

<script>
var ztable = <?php echo json_encode($ztable); ?>;
....other unrelated code.....
</script>

这里的潜在问题可能是函数json_encode is not defined。我建议先检查一下。

这里要做的另一件事是检查 PHP 的输出,如果仍然不起作用,请在您的问题中显示它。

第三个例子看起来坏了

<script>
var ztable = <?php echo $ztable; ?>;
....other unrelated code.....
</script>

$ztable 是一个数组。你希望如何回应它?这带来了一个警告,结果看起来像

<script>
    var ztable = PHP Notice:  Array to string conversion in /home/victor/Projects/emailmarketing/rank/code.php on line 14
Array;
</script>

即使没有显示警告,结果看起来也不是有效的 JS 代码。

【讨论】:

这实际上是一个问题。由于我的“意外令牌?”,我没有设法让代码运行那么远。错误。我将不得不继续寻找将数组导入 JavaScript 的方法。 @Jicnon 是 PHP 处理的文件吗? 是的,大部分代码都是用 PHP 编写的,我只是有一点 javascript 的数字。 @Jicnon 您在浏览器中看到的 html 和 JS 代码是什么?产生 JS 错误的第二个示例的确切 JS 代码是什么? 我上面的代码是产生错误的确切 JS 代码。它不喜欢 ?在

以上是关于将变量从 PHP 传递到 Javascript:意外的令牌?的主要内容,如果未能解决你的问题,请参考以下文章

将变量从 PHP 传递到 javascript 并传递到 html 表单

将变量从 PHP 传递到 Javascript:意外的令牌?

将变量从 WordPress PHP 传递到 JavaScript

通过 POST 将 JSON 编码的变量从 PHP 传递到 Javascript

通过 ajax 将 Javascript 变量传递给 PHP

如何从 Blade 格式 HTML 将 PHP 变量传递给 JavaScript 函数