php - 使用 jquery ajax php 未定义莫里斯图

标签 php jquery ajax morris.js

我是网络开发方面的新手,尤其是 jquery 等。在我的代码中,据说莫里斯图包含来自 ajax 请求的数据。下面是代码片段
HTML

<div id = "node" class = "something">//some divs here</div>
<div id = "myModal role = "dialog">//some divs here again
<div class = "modal-body"><div id = "my_chart"></div></div></div>

Javascript

<script type="text/javascript">
$(document).ready(function(){
  var chart_data = '';
  var div_id = '';

  $(".something").click(function(){
    div_id = jQuery(this).attr("id");
    $.ajax({
      type : 'POST',
      url : 'test1',
      data : { "node_num" : div_id},
      success: function(data){
        chart_data = data;
        console.log(chart_data);
        $('#myModal').modal();
      },
      error: function(data){
        alert("Something went wrong, please refresh");
      }
    });
  });


  $("#myModal").on('shown.bs.modal', function(){
    $('#my_chart').empty();
      var chart =  Morris.Area({
        element: 'my_chart',
        data: chart_data,
        xkey: 'time',
        ykeys:['power'],
        labels:['Power(Watts)'],
        pointSize: 2,
        hideHover: 'auto',
        resize: true,
        lineColors: ['#1abc9c'],
        fillOpacity: 0.75,
        parseTime: false
        });
      });

  $(".something").hover(function(){
    $(this).css('cursor','pointer');
  })
}); 

</script>

PHP

public function test1()
    {
        $node_num = $this->input->post('node_num');
        $chart = '';
        $chart_data = '';
        $query = $this->Nodes->get_chartdata($node_num);

        foreach($query->result() as $row)
        {
            $time = substr($row->n_date, -8);
            $power = ($row->voltage)*($row->current);
            $chart .= "{ power: ".$power.", time: '".$time."' }, ";
        }
        $chart_data = '['.$chart.']';
        echo $chart_data;

    }

PHP 输出

[{ power: 21.837696, time: '10:59:41' }, { power: 2.07552, time: '11:00:23' }, { power: 14.09736, time: '11:00:42' }, { power: 10.149408, time: '11:03:52' }, { power: 20.195136, time: '13:45:01' }, ]

据说莫里斯图会显示一个图like this (我用 php 输出替换了 data:chart_data)。相反,我得到 this 。我按照其他方法但还是一样。对我如何解决这个问题有任何帮助吗?提前非常感谢!

最佳答案

对于图表更新,您需要使用 setData

chart.setData(chart_data);

注意:

第一:您需要将数组对象传递给 graph 而不是 string 。

第二:在 php 端构建数组并使用 json_encode();

进行回显

第三:在ajax调用中添加dataType:'json',

关于php - 使用 jquery ajax php 未定义莫里斯图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45503529/

相关文章:

PHPUnit - 使用 Zend Framework 应用程序生成代码覆盖率报告时出现问题

php - 流明使 :command

javascript - JQuery 事件监听器未触发 - Phonegp/Google map

jquery - 如何重构代码以使 Bootstrap 的模态方法使用回调异步?

php - 根据第一个动态下拉列表中的选择填充第二个动态下拉列表的 Ajax 方法

javascript - Ajax 代码无法在 JavaScript 中运行

php - 如何使用不属于路由的参数重定向到路由()?

javascript - 在vue js中调用v-checkbox onchange事件中的两个函数

jquery - Drupal 8 模块 - 如何使用 AJAX?

javascript - Firefox 插件 : Uploading Image