cakephp中使用ajax获得数据,动态折线显示

新建ShowController.php:

<?php

namespace App\Controller;

use App\Controller\AppController;

class ShowController extends AppController {
	
	
	
	public function initialize()
	{
		parent::initialize();
		$this->loadComponent('RequestHandler');
		$this->loadComponent('Flash'); // Include the FlashComponent
		
	}
	
	public function index() {
		
// 		$this->loadModel('Mydata');
// 		$this->loadModel('Offdata');
// 		if ($this->request->is('ajax')) {
			
// 			$this->autoRender = false;
// 			$id = $_POST ['id'];
// 			$results = $this->Temperature->find ( 'all', array (
// 					'fields' => array (
// 							'Temperature.time',
// 							'Temperature.temp' 
// 					),
// 					'conditions' => array (
// 							'id >' => $id 
// 					) 
// 			) );
// 			$arr = array();
// 			$arr[] = $id;
// 			foreach ($results as $result){
// 				$arr[] = $result->time;
// 				$arr[] = $result->temp;
// 			}
// 			if (count($arr) > 1) {
// 				echo json_encode ( $arr );
// 			}
// 		}			
	}
	
	public function getMyTemperatureData()
	{
		$this->loadModel('Devicesdatas');
		$user_id=$this->request->session()->read('User.id');
		if ($this->request->is('ajax')) {				
			$this->autoRender = false;
			$id = $_POST ['id'];
			$results = $this->Devicesdatas->find ( 'all', array (
					'fields' => array (
							'Devicesdatas.created',
							'Devicesdatas.temperature'
					),
					'conditions' => array (
							'id >' => $id,
							'user_id' => $user_id
					)
			) );
			$arr = array();
			//$arr[] = $id;
			foreach ($results as $result){
				$arr[] = $result->created;
				$arr[] = $result->temperature;
			}
			if (count($arr) > 0) {
				echo json_encode ( $arr );
			}
		}
	}
	
	public function getOffTemperatureData()
	{
		//$user_id=$this->request->session()->read('User.id');
		$this->loadModel('Officialdatas');
		if ($this->request->is('ajax')) {
			$this->autoRender = false;
			$id = $_POST ['id'];
			$results = $this->Officialdatas->find ( 'all', array (
					'fields' => array (
							'Officialdatas.created',
							'Officialdatas.temperature'
					),
					'conditions' => array (
							'id >' => $id,
							//'user_id' => $user_id
					)
			) );
			$arr = array();
			//$arr[] = $id;
			foreach ($results as $result){
				$arr[] = $result->created;
				$arr[] = $result->temperature;
			}
			if (count($arr) > 0) {
				echo json_encode ( $arr );
			}
		}
	}
	
	public function getMyHumidityData()
	{
		$this->loadModel('Devicesdatas');
		$user_id=$this->request->session()->read('User.id');
		if ($this->request->is('ajax')) {
			$this->autoRender = false;
			$id = $_POST ['id'];
			$results = $this->Devicesdatas->find ( 'all', array (
					'fields' => array (
							'Devicesdatas.created',
							'Devicesdatas.humidity'
					),
					'conditions' => array (
							'id >' => $id,
							'user_id' => $user_id
					)
			) );
			$arr = array();
			//$arr[] = $id;
			foreach ($results as $result){
				$arr[] = $result->created;
				$arr[] = $result->humidity;
			}
			if (count($arr) > 0) {
				echo json_encode ( $arr );
			}
		}
	}
	
	public function getOffHumidityData()
	{
		$this->loadModel('Officialdatas');
		//$user_id=$this->request->session()->read('User.id');
		if ($this->request->is('ajax')) {
			$this->autoRender = false;
			$id = $_POST ['id'];
			$results = $this->Officialdatas->find ( 'all', array (
					'fields' => array (
							'Officialdatas.created',
							'Officialdatas.humidity'
					),
					'conditions' => array (
							'id >' => $id,
							//'user_id' => $user_id
					)
			) );
			$arr = array();
			//$arr[] = $id;
			foreach ($results as $result){
				$arr[] = $result->created;
				$arr[] = $result->humidity;
			}
			if (count($arr) > 0) {
				echo json_encode ( $arr );
			}
		}
	}
}



在template下新建Show文件夹,在Show文件夹下新建index.ctp文件:

<head>
<?php echo $this->Html->script('jquery'); ?>
<?php echo $this->Html->script('highcharts'); ?>
<?php echo $this->Html->link('View image', array(
    'controller' => 'devicesdatas',
    'action' => 'imgview'),array(
    'font' => array('size' => '2')
    )
); ?>
<script>
 // global
 var chart1;
 var chart2;
 var id1 = 0;
 var id2 = 0;
 var id3 = 0;
 var id4 = 0;
 var time = new Date();
 time = 0;
 /**
 * Request data from the server, add it to the graph and set a timeout to request again
 */
 function requestMyTemperatureData(){
 	$.ajax({
        url: 'show/getMyTemperatureData',
		type: 'POST',
		data: {"id": id1},
		dataType:'json',
        success: function(data) {
		//alert(data.length);
            var series = chart1.series[0],
                shift = series.data.length > 20; // shift if the series is longer than 20
            // add the point
			if(data != null){
				if(data.length > 2){
					var i = 0;
					while(data != null && i < data.length)
					{
						var x = data[i++], // current time
							y = data[i++];	//mytemperature
							//z = data[i++];	//myhumidity
						id1++;
						x = Date.parse(x);
						chart1.series[0].addPoint([x,y], true, shift);	
						//chart2.series[0].addPoint([x,z], true, shift);						
					}
				}else{
						var x = data[0], // current time
							y = data[1];	//mytemperature
							//z = data[i++];	//myhumidity
						id1++;
						x = Date.parse(x);
						chart1.series[0].addPoint([x,y], true, shift);	//*/
						//chart2.series[0].addPoint([x,z], true, shift);		
				}
				setTimeout(requestMyTemperatureData, 1000);
			}else{
				setTimeout(requestMyTemperatureData, 1000);
			}
               
        },
        cache: false
    });
 }
 function requestOfficalTemperatureData(){
 	$.ajax({
        url: 'show/getOffTemperatureData',
		type: 'POST',
		data: {"id": id2},
		dataType:'json',
        success: function(data) {
		//alert(data.length);
            var series = chart1.series[1],
                shift = series.data.length > 30; // shift if the series is longer than 20
            // add the point
			if(data != null){
				if(data.length > 2){
					var i = 0;
					while(data != null && i < data.length)
					{
						var x = data[i++], // current time
							y = data[i++];	//mytemperature
							//z = data[i++];//myhumidity
						id2++;
						x = Date.parse(x);
						y = -y;
						//z = -z;
						chart1.series[1].addPoint([x,y], true, shift);
						//chart2.series[1].addPoint([x,z], true, shift);						
					}
				}else{
						var x = data[0], // current time
							y = data[1];	//mytemperature
							//z = data[i++];//myhumidity
						id2++;
						x = Date.parse(x);
						y = -y;
						//z = -z;
						chart1.series[1].addPoint([x,y], true, shift);	//*/
						//chart2.series[1].addPoint([x,z], true, shift);		
				}
				setTimeout(requestOfficalTemperatureData, 1000);
			}else{
				setTimeout(requestOfficalTemperatureData, 1000);
			}
               
        },
        cache: false
    });
 }
function requestTemperatureData() {
	requestMyTemperatureData();
	requestOfficalTemperatureData(); 	
}

 function requestMyHumidityData(){
 	$.ajax({
        url: 'show/getMyHumidityData',
		type: 'POST',
		data: {"id": id3},
		dataType:'json',
        success: function(data) {
		//alert(data.length);
            var series = chart1.series[0],
                shift = series.data.length > 20; // shift if the series is longer than 20
            // add the point
			if(data != null){
				if(data.length > 2){
					var i = 0;
					while(data != null && i < data.length)
					{
						var x = data[i++], // current time
							y = data[i++];	//mytemperature
							//z = data[i++];	//myhumidity
						id3++;
						x = Date.parse(x);
						chart2.series[0].addPoint([x,y], true, shift);	
						//chart2.series[0].addPoint([x,z], true, shift);						
					}
				}else{
						var x = data[0], // current time
							y = data[1];	//mytemperature
							//z = data[i++];	//myhumidity
						id3++;
						x = Date.parse(x);
						chart2.series[0].addPoint([x,y], true, shift);	//*/
						//chart2.series[0].addPoint([x,z], true, shift);		
				}
				setTimeout(requestMyHumidityData, 1000);
			}else{
				setTimeout(requestMyHumidityData, 1000);
			}
               
        },
        cache: false
    });
 }
 function requestOfficalHumidityData(){
 	$.ajax({
        url: 'show/getOffHumidityData',
		type: 'POST',
		data: {"id": id4},
		dataType:'json',
        success: function(data) {
		//alert(data.length);
            var series = chart1.series[1],
                shift = series.data.length > 20; // shift if the series is longer than 20
            // add the point
			if(data != null){
				if(data.length > 2){
					var i = 0;
					while(data != null && i < data.length)
					{
						var x = data[i++], // current time
							y = data[i++];	//mytemperature
							//z = data[i++];//myhumidity
						id4++;
						x = Date.parse(x);
						y = -y;
						//z = -z;
						chart2.series[1].addPoint([x,y], true, shift);
						//chart2.series[1].addPoint([x,z], true, shift);						
					}
				}else{
						var x = data[0], // current time
							y = data[1];	//mytemperature
							//z = data[i++];//myhumidity
						id4++;
						x = Date.parse(x);
						y = -y;
						//z = -z;
						chart2.series[1].addPoint([x,y], true, shift);	//*/
						//chart2.series[1].addPoint([x,z], true, shift);		
				}
				setTimeout(requestOfficalHumidityData, 1000);
			}else{
				setTimeout(requestOfficalHumidityeData, 1000);
			}
               
        },
        cache: false
    });
 }
function requestHumidityData() {
	requestMyHumidityData();
	requestOfficalHumidityData(); 	
}


$(document).ready(function() {
	Highcharts.setOptions({                                                     
		global: {                                                               
			useUTC: false                                                       
		}                                                                       
	});
    chart1 = new Highcharts.Chart({
        chart: {
            renderTo: 'container1',
            defaultSeriesType: 'spline',
            events: {
                load: requestTemperatureData
            }
        },
        title: {
            text: 'temperature'
        },
        xAxis: [{
            type: 'datetime',
			//tickInterval: 5,
           	//tickPixelInterval: 5000,
			title: {
				text: 'my temperature',
				style: {
					color: '#89A54E'
				}
            }
           // maxZoom: 20 * 1000
        },
		{
            type: 'datetime',
           	//tickPixelInterval: 100,
			opposite: true, //������ ��ʾ��ʾ���Ϸ�
			title: {
				text: 'offical temperature',
				style: {
					color: '#89A54E'
				}
            }
           // maxZoom: 20 * 1000
        }],
        yAxis: {
            minPadding: 0.2,
            maxPadding: 0.2,
            title: {
                text: 'temperature',
                margin: 80
            }
        },
        series: [{
            name: 'my temperature',
            data: []
        },
		{
            name: 'offical temperature',
            data: [],
			xAxis: 1	//�ڶ���X��
        }],
		tooltip:{
		shared:true,
		crosshairs:true,
		xDateFormat: '%Y-%m-%d %H:%M:%S'
		}
    }); 
	chart2 = new Highcharts.Chart({
        chart: {
            renderTo: 'container2',
            defaultSeriesType: 'spline',
            events: {
                load: requestHumidityData
            }
        },
        title: {
            text: 'humidity'
        },
        xAxis: [{
            type: 'datetime',
			//tickInterval: 5,
           	//tickPixelInterval: 5000,
			title: {
				text: 'my humidity',
				style: {
					color: '#89A54E'
				}
            }
           // maxZoom: 20 * 1000
        },
		{
            type: 'datetime',
           	//tickPixelInterval: 100,
			opposite: true, //������ ��ʾ��ʾ���Ϸ�
			title: {
				text: 'offical humidity',
				style: {
					color: '#89A54E'
				}
            }
           // maxZoom: 20 * 1000
        }],
        yAxis: {
            minPadding: 0.2,
            maxPadding: 0.2,
            title: {
                text: 'humidity',
                margin: 80
            }
        },
        series: [{
            name: 'my humidity',
            data: []
        },
		{
            name: 'offical humidity',
            data: [],
			xAxis: 1	//�ڶ���X��
        }],
		tooltip:{
		shared:true,
		crosshairs:true,
		xDateFormat: '%Y-%m-%d %H:%M:%S'
		}
    }); 
	       
});
</script>
</head>

<body>
<div id="container1" style="height: 265px; min-width: 600px; background-color:#CCCCCC"></div>
<div id="container2" style="height: 265px; min-width: 600px; background-color:#CCCCCC"></div>
</body>

这样当数据库数据更新时,数据会添加到折现上,实现动态效果

### 回答1: JTextField 是一个文本框组件,可以用来输入和显示文本信息。它的构造方法可以设置文本框的初始文本内容、长度、对齐方式等属性。 JRadioButton 是一个单选按钮组件,可以让用户在几个选项选择一个。它的构造方法可以设置按钮的初始状态、文本内容、图标等属性。 ButtonGroup 是一个单选按钮组的辅助类,用于维护一组单选按钮的状态。它的 add() 方法可以将单选按钮添加到组,clearSelection() 方法可以清除组的选状态。 JButton 是一个按钮组件,可以用来触发某个操作或执行某个功能。它的构造方法可以设置按钮的文本内容、图标、是否可用等属性。 以上这些组件都是属于 Java Swing 界面库的一部分,可以通过组合和布局的方式来构建出复杂的用户界面。 ### 回答2: JTextField 是一个可以让用户输入文本的组件。它可以用于创建文本框,让用户在其输入文字信息。 JTextField 具有以下特点: - 可以设置文本框的大小和位置。 - 可以设置文本框的提示信息。 - 可以监听用户的输入事件。 - 可以限制用户的输入内容,例如只允许输入数字或者限制输入的字符数。 - 可以获取用户输入的文本内容。 JRadioButton 是一种单选按钮组件。它常用于在多个选项选择一个选项。 JRadioButton 具有以下特点: - 可以创建多个单选按钮,并将它们放入同一个按钮组(ButtonGroup)。 - 在同一个按钮组,只能选一个单选按钮。 - 可以通过监听单选按钮的选事件,来获取用户当前选择的选项。 ButtonGroup group=null; 是定义了一个 ButtonGroup 类型的变量 group,并将其初始化为 null。 JButton 是一个按钮组件。它可以用来触发一些操作,例如保存、查询、删除、修改、显示等。 JButton 具有以下特点: - 可以创建一个具有特定文本或图标的按钮。 - 可以设置按钮的大小和位置。 - 可以监听按钮的点击事件。 - 可以通过设置按钮的样式、颜色等属性,来改变按钮的外观。 以上是对给定代码 JTextField、JRadioButton、ButtonGroup 和 JButton 的功能和特点进行的简要说明。 ### 回答3: JTextField 是 Java Swing 组件库的一个类,用于创建文本输入框。它可以用于接收用户的输入,并且可以通过代码来获取或修改输入框的文本内容。JTextField 提供了一些属性和方法,可以设置输入框的大小、字体、边框等样式,还可以添加监听器来处理用户输入事件。 JRadioButton 也是 Java Swing 组件库的一个类,用于创建单选按钮。它可以用于提供用户在多个选项选择一个的功能。JRadioButton 有两种状态:选和未选,在同一个按钮组只能有一个按钮被选。可以通过代码来获取的按钮,并且可以设置按钮的文本、样式等属性。 ButtonGroup 是一个用于管理单选按钮的类。通过创建 ButtonGroup 对象并将一组 JRadioButton 对象添加到该组,可以确保在这组单选按钮只有一个按钮被选。这样可以实现单选的功能。 JButton 是 Java Swing 组件库的一个类,用于创建按钮。它可以被用户点击,用于触发响应的事件处理代码。JButton 通常用于执行特定的操作,比如保存数据、查询信息、删除内容等。可以通过代码来设置按钮的文本、图标、样式等属性,还可以为按钮添加监听器来处理按钮的点击事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值