将变量从 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 已设置。但是假设我可以绕过这个错误,这行代码看起来确实很有用。 将<?php echo '<pre>' . print_r($ztable, 1) . '</pre>'; die(); ?>
放在您的 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