#javascript #ajax #yii #highcharts
#javascript #ajax #yii #высокие диаграммы
Вопрос:
У меня есть представление, содержащее некоторые пользовательские данные, a CListView
с данными, извлеченными из базы данных, представляющими журнал запросов (IP, ключ, дата / время) и пользовательский виджет HighCharts, который рисует диаграмму на основе этих данных.
Данные CListView
отображаются без группировки, то есть это представление 1: 1 того, что сохраняется в базе данных.
Виджет HighCharts должен отображать данные, группируя их по дням, месяцам или годам.
Я заметил, что CListView
он способен повторно отображать всю страницу без ее перезагрузки, выполняя AJAX-запрос (который я не реализовал в своем контроллере).
Возможно ли создать единый dropDownList
виджет, который будет запускать тот же AJAX-запрос и заставит действие моего контроллера учитывать выбранное значение?
Это действие моего контроллера:
public function actionUser($id)
{
$usuario = User::model()->with('Contract')->findByPk($id);
$contract = new CArrayDataProvider($usuario->Contract, array(
'keyField'=>'idkey'
));
$usage = new CArrayDataProvider($user->Usage, array(
'keyField'=>'idusage',
'pagination'=>array(
'pageSize'=>15
)
));
$this->render('user',array(
'user'=>$user,
'contract'=>$contract,
'usage'=>$usage
));
}
И dropDownList
виджет
<?php echo CHtml::dropDownList('graph', 'gr', array(
'd'=>'Daily',
'm'=>'Monthly',
'y'=>'Yearly'
)); ?>
Комментарии:
1. Используйте json (с помощью json_encode в php) для связи вашего скрипта с javascript ($.getJSON()).
Ответ №1:
Я бы рекомендовал отправить ajax-запрос вашему контроллеру, чтобы получить данные, а затем вернуть данные в формате json в представление. Затем повторно отобразите таблицу с новыми данными.