0

我在 php 中定义了 3 个变量

$record = "283-161-151";
$rec = explode("-", $record);
$win = $rec[0];
$draw = $rec[1];
$loss = $rec[2];

$win、$draw 和 $loss 回声很好,所以我知道它们在工作

在页面底部运行的单独 js 文件中设置 var 数据时,我想将 3 个变量传递给 3 个设置文本标签。

var data = [
{ label: 'Wins',  data: '<?php echo $win ?>', color:'green'},
{ label: 'Draws',  data: '<?php echo $draw ?>', color:'orange'},
{ label: 'Losses',  data: '<?php echo $loss ?>', color:'red'}
];

如果我将每个 js php 调用从<?php echo $win ?>更改为实际数字以测试图表显示。

我想知道内联php语法是否正确?我尝试了几种不同的格式,希望用一双新鲜的眼睛轻松解决。

更新

php代码

<?php
$record = "283-161-151";
$rec = explode("-", $record);
?>
<script>
 var win = <?php echo $rec[0]; ?>;
 var draw = <?php echo $rec[1]; ?>;
 var loss = <?php echo $rec[2]; ?>;
</script>

js文件代码

var data = [
{ label: 'Wins',  data: var win, color:'green'},
{ label: 'Draws',  data: var draw, color:'orange'},
{ label: 'Losses',  data: var loss, color:'red'}
];

当我查看页面源时,我看到了这个

<script>
 var win = 283;
 var draw = 161;
 var loss = 151;
</script>

但仍然没有输出..如果我用数字替换最终 js 文件中的 var win、var draw 等,它确实有效..

有人知道我是否接近了吗?干杯

4

3 回答 3

2

I think the problem is that you are quoting the numbers. Change it so that the numbers are unquoted:

var data = [
{ label: 'Wins',  data: <?php echo $win ?>, color:'green'},
{ label: 'Draws',  data: <?php echo $draw ?>, color:'orange'},
{ label: 'Losses',  data: <?php echo $loss ?>, color:'red'}
];
于 2013-01-24T18:27:29.240 回答
0

显然您的 PHP 变量超出了范围,那是因为 echo 返回 ''。

有一个很好的主题描述“如何使用 PHP 回显函数在 JavaScript 中定义变量?

PS:出于测试目的,如果可能的话,您可以尝试将 javascript 片段嵌入到声明变量的 PHP 脚本中。

于 2013-01-24T11:25:21.853 回答
0

您正在尝试在 javascript 文件中运行 php。浏览器无法处理服务器代码。php 仅在服务器上运行。

您可以做的是将 php 变量传递给 javascript 变量,如下所示: 在页面内(在外部脚本的脚本标记之前):

$record = "283-161-151";
$rec = explode("-", $record);
echo '<script>var plotData='.json_encode($rec).';</script>';
/* displays var plotData=[283,161,151]; */

现在使用已经存在 JS 的 javascript 变量将是:

var data = [
{ label: 'Wins',  data: plotData[0], color:'green'},
{ label: 'Draws',  data: plotData[1], color:'orange'},
{ label: 'Losses',  data: plotData[2], color:'red'}
];
于 2013-01-24T11:35:08.847 回答