Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将php变量传递给morris.js_Javascript_Php_Graph_Charts_Morris.js - Fatal编程技术网

Javascript 将php变量传递给morris.js

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:

您好,我在javascript方面有丰富的经验,我遇到了以下情况。
我正在开发一个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”只是您的项目的占位符,您不必这样称呼它。你能更具体地说明你遇到的问题吗?是的,我明白…我只是照着原样复制,看看它是否能正常工作。。。