Javascript 将php变量传递给morris.js
您好,我在javascript方面有丰富的经验,我遇到了以下情况。Javascript 将php变量传递给morris.js,javascript,php,graph,charts,morris.js,Javascript,Php,Graph,Charts,Morris.js,您好,我在javascript方面有丰富的经验,我遇到了以下情况。 我正在开发一个PHP页面,以在图形中显示一些值。我正在使用morris.js。 现在,morris.js使用以下格式的数组显示为图形: // AREA CHART var area = new Morris.Area({ element: 'revenue-chart', resize: true, data:
我正在开发一个PHP页面,以在图形中显示一些值。我正在使用morris.js。
现在,morris.js使用以下格式的数组显示为图形:
// AREA CHART
var area = new Morris.Area({
element: 'revenue-chart',
resize: true,
data: [
{y: '2011', purchase: 500, sale: 1000, profit: 500},
{y: '2012', purchase: 600, sale: 1100, profit: 500},
{y: '2013', purchase: 500, sale: 1050, profit: 550}
],
xkey: 'y',
ykeys: ['profit', 'purchase', 'sale'],
labels: ['Profit', 'Purchase', 'Sale'],
lineColors: ['#a0d0e0', '#3c8dbc', '#ac5bc3'],
hideHover: 'auto'
});
但是我在php变量中有这样的值:$year1 = '2011';
$sale1 = '1000';
$purchase1 = '500';
$profit1 = '500';
$year2 = '2012';
$sale2 = '1200';
$purchase2 = '600';
$profit2 = '500';
$year3 = '2013';
$sale3 = '1050';
$purchase3 = '500';
$profit3 = '550';
如何将这些php值传递给js。我尝试了json_encode(),但对我来说不起作用。更新:显示更新的代码和Luke Cordingley的答案,仍然有问题
<script type="text/javascript">
window.MyProjectNamespace.phpVars = <?
$phpVars = array('year' => '2011', 'purchase' => '1000', 'sale' => '600', 'profit' => '400');
echo json_encode($phpVars);
?>
</script>
<script type="text/javascript">
$(function() {
// AREA CHART
var area = new Morris.Area({
element: 'revenue-chart',
resize: true,
data: [
{y: window.MyProjectNamespace.phpVars.year, purchase: "500", sale: "1000", profit: "500"},
{y: "2012", purchase: "600", sale: "1100", profit: "500"},
{y: "2013", purchase: "500", sale: "1050", profit: "550"}
],
xkey: 'y',
ykeys: ['profit', 'purchase', 'sale'],
labels: ['Profit', 'Purchase', 'Sale'],
lineColors: ['#a0d0e0', '#3c8dbc', '#000000'],
hideHover: 'auto'
});
});
window.MyProjectNamespace.phpVars=
$(函数(){
//面积图
var面积=新莫里斯面积({
要素:'收入表',
调整大小:对,
数据:[
{y:window.MyProjectNamespace.phpVars.year,购买:“500”,销售:“1000”,利润:“500”},
{y:“2012”,购买:“600”,销售:“1100”,利润:“500”},
{y:“2013”,购买:“500”,销售:“1050”,利润:“550”}
],
xkey:'y',
ykeys:[“利润”、“购买”、“出售”],
标签:[“利润”、“购买”、“销售”],
线条颜色:['a0d0e0'、'3c8dbc'、'000000'],
隐藏:“自动”
});
});
您需要动态生成javascript,或者按照我的喜好,创建一个与我的PHP变量对应的javascript对象。一旦将PHP变量转换成JavaScript,只需根据需要将它们传递给任何JavaScript方法。下面是一个如何在JavaScript中获取PHP变量的示例:
<script type="text/javascript">
$(function() {
window.MyProjectNamespace = {};
window.MyProjectNamespace.phpVars = <?php
$phpVars = array('year' => '2011', 'purchase' => '1000', 'sale' => '600', 'profit' => '400');
echo json_encode($phpVars);
?>;
// AREA CHART
var area = new Morris.Area({
element: 'revenue-chart',
resize: true,
data: [
{y: window.MyProjectNamespace.phpVars.year, purchase: "500", sale: "1000", profit: "500"},
{y: "2012", purchase: "600", sale: "1100", profit: "500"},
{y: "2013", purchase: "500", sale: "1050", profit: "550"}
],
xkey: 'y',
ykeys: ['profit', 'purchase', 'sale'],
labels: ['Profit', 'Purchase', 'Sale'],
lineColors: ['#a0d0e0', '#3c8dbc', '#000000'],
hideHover: 'auto'
});
});
</script>
$(函数(){
window.MyProjectNamespace={};
window.MyProjectNamespace.phpVars=;
//面积图
var面积=新莫里斯面积({
要素:'收入表',
调整大小:对,
数据:[
{y:window.MyProjectNamespace.phpVars.year,购买:“500”,销售:“1000”,利润:“500”},
{y:“2012”,购买:“600”,销售:“1100”,利润:“500”},
{y:“2013”,购买:“500”,销售:“1050”,利润:“550”}
],
xkey:'y',
ykeys:[“利润”、“购买”、“出售”],
标签:[“利润”、“购买”、“销售”],
线条颜色:['a0d0e0'、'3c8dbc'、'000000'],
隐藏:“自动”
});
});
您应该在javascript中使用ajax从服务器端获取变量
如果使用jquery:
$.ajax({
type : "POST",
url : "get_my_Variable.php",
dataType: "json",
data : {hello:'i`m'},
success : function(msg) {
// here u get your variables
},
complete : function(r) {
},
error: function(error) {
}
});
在服务器端:
if(isset($_POST['hello'])){
echo json_encode($myVariables);
}
你能解释一下console.log(window.MyProjectNamespace.phpVars)的位置吗代码>将被插入。我尝试将上面代码中的
数据:[……]
替换为数据:[console.log(window.MyProjectNamespace.phpVars);]
,但没有这样做。console.log只是一个调试函数,它向您显示特定变量中包含的内容。例如,如果您有json_encode(数组('one'=>1,'two'=>2))将创建一个JavaScript标准对象,如{'one':1,'two':2}
。因此,如果您想将所有PHP变量放入JavaScript,使用我的示例,您可以访问变量“one”的值:window.MyProjectNamespace.phpVars.one
。该变量的值为“1”。在JavaScript中输入必要的变量后,您可以将它们传递给Morris.Area方法,如图所示:嗨,Luke,我刚刚用您的答案更新了我的问题,但仍然存在一些问题。请看一看,“MyProjectNamespace”只是您的项目的占位符,您不必这样称呼它。你能更具体地说明你遇到的问题吗?是的,我明白…我只是照着原样复制,看看它是否能正常工作。。。