设置Highcharts头标签时无法在JS脚本中获取PHP变量[关闭]
Posted
技术标签:
【中文标题】设置Highcharts头标签时无法在JS脚本中获取PHP变量[关闭]【英文标题】:Can't get PHP variables in the JS script when setting Highcharts head tag [closed] 【发布时间】:2013-02-11 19:32:07 【问题描述】:下面是我的 php 文件 (recherche.php
) 的摘录,其中包含 html
和 javascript
(JQuery Highcharts
) 代码并运行 mysql
查询。
但是,在head
标记中设置JQuery 代码时,我无法访问PHP
变量。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title></title>
<link href="../css/bootstrap.css" type="text/css" rel="stylesheet" />
<link href="../css/style.css" type="text/css" rel="stylesheet" />
<script src="./graphics/js/jquery-1.9.1.js" type="text/javascript"></script>
<script src="./graphics/js/highcharts.js" type="text/javascript"></script>
<script type="text/javascript">
var cat = '<?php echo $categorys; ?>' ;
var data1 = '<?php echo $datas; ?>' ;
var data2 = '<?php echo $datas2; ?>' ;
var data3 = '<?php echo $datas3; ?>' ;
var chart;
$(document).ready(function()
chart1 = new Highcharts.Chart(
chart:
renderTo: 'containerxx',
type: 'bar'
,
title:
text: 'Average salaries of the sector'
,
xAxis:
categories: ['Women', 'Men']
,
yAxis:
title:
text: 'Salary'
,
series: [
name: 'average salary',
data: document.write(data1);
,
name: 'max salary',
data: document.write(data2);
,
name: 'min salary',
data: document.write(data3);
]
);
);
</script>
...以及下面,仍然在同一个文件和body
标记中,经过更多代码后,是php 变量分配:
...
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
$category[] = $row[$categorie];
$data[] = (INT)$row['Salaire_moyen'];
$data2[] = (INT)$row['Salaire_Max'];
$data3[] = (INT)$row['Salaire_Min'];
$categorys = json_encode($category);
echo $categorys ;
echo "<br/><br/>";
$datas = json_encode($data);
echo $datas ;
echo "<br/><br/>";
$datas2 = json_encode($data2);
echo $datas2;
echo "<br/><br/>";
$datas3 = json_encode($data3);
echo $datas3 ;
echo "<br/><br/>";
....
这是启动高图图形的命令:
<div id="containerxx" style="width:100%; height:400px; margin:0 auto"></div>
但遗憾的是,屏幕上没有显示图表。
但是当我在同一个 php 文件中对静态值执行相同操作时,它可以工作,并且我可以在我的网页中获得高图图形。
例如,当我在同一个文件中编写下面的脚本而不是上面的脚本时,它可以工作并且图形显示在我的页面上:
<script type="text/javascript">
var chart;
$(document).ready(function()
chart1 = new Highcharts.Chart(
chart:
renderTo: 'containerxx',
type: 'bar'
,
title:
text: 'Salaire moyen des métiers de l\'informatique'
,
xAxis:
categories: ['Architecte logiciel', 'Développeur logiciel', 'Infogérance']
,
yAxis:
title:
text: 'Salaire moyen'
,
series: [
name: 'Femmes',
data: [60000, 45000, 25000]
,
name: 'Hommes',
data: [75000, 48000, 27500]
]
);
);
</script>
让我的图形动态处理 PHP 变量(尽管是静态变量),我错过了什么?
【问题讨论】:
尖叫声掩盖了所有必要的东西? 会发生什么?你有错误吗?它们是什么? 什么视图源显示?为什么json_encode
在整数上?
欢迎来到 Stack Overflow。这不是一个付费支持网站,因此敦促网站常客快速回答不太可能帮助您获得答案。此外,您的问题显示很少的研究工作。您基本上将您的完整应用程序转储在这里,并模糊地描述了它如何无法工作并期望我们猜测。如果您想编写代码,您至少应该能够识别出您的代码的哪一部分没有按预期工作。
为什么要在 3 个地方写 document.write?赋值像 data: '';
【参考方案1】:
您必须先初始化变量,然后才能在 JavaScript 函数中回显它们。因此,将加载这些变量的 PHP 放在您的 <script>
【讨论】:
我可以将PHP脚本放在html的'head'标签之前吗? 是的,您可以将它放在任何您想要的地方。您应该知道 PHP 是服务器端,并且由于 PHP 是一种编程语言,它从上到下工作。例如 1:echo $string;
2:$string = "Hi";
不起作用。 1:$string = "Hi";
2:echo $string;
将输出Hi
我的 javascript 代码中的“document.write(xxx)”怎么样:“系列:[ name: 'salaire moyen', data: document.write(data1);”是否正确?或者调用js变量是否还有其他可能性:data1,data2,data 3?
我不认为document.write
是必要的。我不是很喜欢 JS,所以我不确定。我会说无论是否使用document.write
都可以尝试一下,看看什么效果最好。
按照您的建议,我已将 php 代码(带有变量的初始化)放在 JS 脚本之前,我尝试使用“document.write”=> 调用 JS 变量我的屏幕(它不工作);而且我尝试在没有 document.write 的情况下调用变量:相同的结果:没有任何工作....【参考方案2】:
series: [
name: 'average salary',
data: document.write(data1)
,
name: 'max salary',
data: document.write(data2)
,
name: 'min salary',
data: document.write(data3)
]
document.write(data1/2/3/...)
后面的分号
【讨论】:
我可以简单地说:系列:[名称:'平均工资',数据:data1,名称:'最高工资',数据:数据2,名称:'最低工资',数据:data3 ] ?以上是关于设置Highcharts头标签时无法在JS脚本中获取PHP变量[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
HIGHCHARTS:drilldown.js更改饼图标签颜色