2016-05-05 31 views
-2

我的总体目标是将一组数字从php传递给js。我看到其他地方的解决方案只是放在JavaScript中,所以我一直在尝试。但是,我不断收到错误“意外令牌?”当我添加与php的线。我已检查$ ztable实际上是我想要的变量,它确实存在。下面是我尝试过的三个不同的例子,它们都返回了相同的错误。我尝试了一些其他方法从PHP获取变量的JavaScript以及但没有一个似乎适合我。如果我写的代码有问题,请告诉我,或者如果有另一种传输变量的简单方法,我很乐意听到它。通过我的应用程序,变量只被传递一次,所以速度不是问题,也不是安全(出于不同的原因)。将变量从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.04,0.02,0.01,0.006,0.003,0.001];其中,所述组合物包含一种或多种化合物。

+0

刚刚阅读文档[这里](http://php.net/json_encode) – Terminus

+0

显示您的php代码也 –

+0

你使用jQuery吗? – Mike

回答

0

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

<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代码。

+0

这实际上是一个问题。由于我的“意外令牌”,我没有设法让代码运行那么远。错误。我将不得不继续寻找将数组转换为JavaScript的方法。 – Jicnon

+0

@Jicnon对不起,我看错了你的问题。 –

+0

@Jicnon是PHP处理的文件吗? –

1

我认为你正在寻找的东西,如:

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

似乎你的例子并不将JSON从javascript中的字符串转换。

如果没有定义$ztable,这也会提供一个默认的空数组,这将会优雅地失败。

+0

当我尝试使用您提供的代码行时,我仍然收到错误“意外令牌?”这使得它始终得到一个null数组,即使我知道$ ztable已经设置。但假设我可以解决这个错误,这行代码看起来好像很有用。 – Jicnon

+0

放置'<?php echo'

' . print_r($ztable, 1) . '
';死(); ?>'在JavaScript标记之前在渲染前立即检查输出。如果您有奇怪的变量问题,请在调用输出前立即检查输出以排除其他影响。如果您在代码中的其他地方通过引用传递,这可能也会导致难以调试的问题。 – mopsyd