Javascript 如何使用highchart在yii中添加实时更新图表

Javascript 如何使用highchart在yii中添加实时更新图表,javascript,php,ajax,yii,highcharts,Javascript,Php,Ajax,Yii,Highcharts,我使用Yii和Activehighcharts来显示图表。 控制器如下 public function actionChartView(){ $dataProvider=new CActiveDataProvider('ChartData',array( 'criteria'=>array( 'condition'=>'dID=2', 'order'=>'time

我使用Yii和Activehighcharts来显示图表。

控制器如下

    public function actionChartView(){
        $dataProvider=new CActiveDataProvider('ChartData',array(
            'criteria'=>array(
                'condition'=>'dID=2',
                'order'=>'time ASC',
                ),
            'pagination'=>array(
                'pageSize'=>50,
                ),
            )
        );
        $p=$dataProvider->pagination;
        $p->setItemCount($dataProvider->getTotalItemCount());
        $p->currentPage=$p->pageCount-1;
        if(isset($_GET['json']) && $_GET['json'] == 1){
            $count = ChartData::model()->count();
            for($i=1; $i<=$count; $i++){
                $data = ChartData::model()->findByPk($i);
                $data->data += rand(-10,10);
                $data->save();
            }
            echo CJSON::encode($dataProvider->getData());
        }
        else{
            $this->render('ChartView',array('dataProvider'=>$dataProvider,));
        }
}
我需要用ajax每2分钟更新一次图表。 我还需要获取旧数据


如何处理这些场景。

在ajax调用成功回调中,使用highcharts文档中提供的api方法更新图表中的数据


请参阅此文档,它将帮助您找到一个好的解决方案。

好的。为了最好地回答您的问题,我将尽可能地澄清问题。

首先需要创建一个视图(一个包含highchart代码的php文件)

其次,您需要编辑控制器(假设为siteController)并创建一个操作来调用刚刚创建的视图。在该操作中,您需要连接并查询数据库

请参见下面的示例代码:

站点控制器操作:

public function actionAtencionesMensuales() {
$sql = Yii::app()->db->createCommand('
SELECT DISTINCT MONTH(hora) as mes, count(*) as total
FROM visitas
WHERE YEAR(hora)=YEAR(CURDATE())
GROUP BY MONTH(hora)')->queryAll();
$mes = array();
$total = array();
for ($i = 0; $i < sizeof($sql); $i++) {
$mes[] = $sql[$i]["mes"];
$total[] = (int) $sql[$i]["total"];
}
$this->render('my_view', array('mes' => $mes, 'total' => $total));
}
}
<?php
$this->Widget('ext.highcharts.HighchartsWidget', array(
'options' => array(
'exporting' => array('enabled' => true),
'title' => array('text' => 'Mes'),
'theme' => 'grid',
'rangeSelector' => array('selected' => 1),
'xAxis' => array(
'categories' => $mes
),
'yAxis' => array(
'title' => array('text' => 'Cantidad')
),
'series' => array(
array('name' => 'Total', 'data' => $total = array_map('intVal', $total)),
)
)
));
?>
$total = array_map('intVal', $total)
$total
而不仅仅是:

public function actionAtencionesMensuales() {
$sql = Yii::app()->db->createCommand('
SELECT DISTINCT MONTH(hora) as mes, count(*) as total
FROM visitas
WHERE YEAR(hora)=YEAR(CURDATE())
GROUP BY MONTH(hora)')->queryAll();
$mes = array();
$total = array();
for ($i = 0; $i < sizeof($sql); $i++) {
$mes[] = $sql[$i]["mes"];
$total[] = (int) $sql[$i]["total"];
}
$this->render('my_view', array('mes' => $mes, 'total' => $total));
}
}
<?php
$this->Widget('ext.highcharts.HighchartsWidget', array(
'options' => array(
'exporting' => array('enabled' => true),
'title' => array('text' => 'Mes'),
'theme' => 'grid',
'rangeSelector' => array('selected' => 1),
'xAxis' => array(
'categories' => $mes
),
'yAxis' => array(
'title' => array('text' => 'Cantidad')
),
'series' => array(
array('name' => 'Total', 'data' => $total = array_map('intVal', $total)),
)
)
));
?>
$total = array_map('intVal', $total)
$total

祝你好运:)

我根本不知道如何在模型/控制器和视图中添加这些内容。