Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2015, 08:50
Новичок на форуме
Отправить личное сообщение для Efiop1 Посмотреть профиль Найти все сообщения от Efiop1
 
Регистрация: 04.06.2015
Сообщений: 3

$.getJSON не получает данные
Доброго времени суток! Делаю выборку данных с помощью календаря в БД, задаю дату начал и конца, вывожу alert, но он получается пустой, если задать руками дату и время все работает. Возможно, что код кривой, но я только учусь. В чем может быть ошибка, не подскажете?

<form id="form1" name="form1" action="<?php $_PHP_SELF ?>" method="GET" >
 <center>
 </center> 
 <div class="date" align= "center" >
  <label>Дата начала:</label>
  <input type="text" name="txtStartDate" id="txtStartDate" value = "2013-08-01"></input>
  &nbsp;&nbsp;&nbsp;
  <label>Дата окончания:</label>
  <input type="text" name="txtEndDate" id="txtEndDate" value = "2013-08-31"></input>
  <input type="submit" id="submit" value="Отправить" onclick=""></input>  
</form>


$stime =$_GET['txtStartDate'];
$etime =$_GET['txtEndDate'];

//$query1 = 'SELECT * FROM pokazanie WHERE termometr_id=1 AND time >= "2013-05-03 00:00:00" AND time <= "2013-05-04 23:59:59"' ; //вот так работает
$query1 = 'SELECT * FROM pokazanie WHERE termometr_id=1 AND time >= "'.$stime.' 00:00:00" AND time <= "'.$etime.' 23:59:59"' ;
 
$result1 = mysql_query($query1) or die('Ошибка запроса: ' . mysql_error());
 
$djson1 = array();
$i=0;
 
while($row1 = mysql_fetch_array($result1)){
 
array_push($djson1,array($row1['time_unix'],$row1['meaning']));//Обьединяем в один
 
$i++;
}

echo str_replace('"','',json_encode($djson1));


$.getJSON('http://sa1.ru/json.php?&txtStartDate=' +txtStartDate +'&txtEndDate' +txtEndDate,    function (data) {
      
alert(data);
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2015, 09:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

$query1 = 'SELECT * FROM pokazanie WHERE termometr_id=1 AND time BETWEEN "'.mysql_real_escape_string($_GET['txtStartDate']).'" AND "'.mysql_real_escape_string($_GET['txtEndDate']).' 23:59:59"';

$result1 = mysql_query($query1) or die('Ошибка запроса: ' . mysql_error()); //только на время отладки

while($row = mysql_fetch_assoc($result1)) $json[] = $row;

echo json_encode($json); //str_replace('"','',..) это как понимать? Невалидный JSON формат получится после этого


А это что?

$.getJSON('http://sa1.ru/json.php?&txtStartDate=' +txtStartDate +'&txtEndDate' +txtEndDate, function (data)

Кто, когда на клиенте вызывает это, передает параметры и т.д.? Код наверное показывать надо.
Ответить с цитированием
  #3 (permalink)  
Старый 04.06.2015, 10:17
Новичок на форуме
Отправить личное сообщение для Efiop1 Посмотреть профиль Найти все сообщения от Efiop1
 
Регистрация: 04.06.2015
Сообщений: 3

echo json_encode($json); //str_replace('"','',..) это как понимать? Невалидный JSON формат получится после этого
str_replace('"','',..) вот это использовал, так как данные для библиотеки Highstock должны быть в таком формате [[1354193753,1],...,[1431069592,2]]
Вот весь код
$(function () {

//--------------------------------------------------------------------------------------------------------

				Highcharts.setOptions({
				
					lang: {
						
					},
						
					global: {
						useUTC: false
					}
				});


//-----------------------------------------------------------------------------------------------------------		
    var seriesOptions = [],
        seriesCounter = 0,
		yAxiss = 0,
		vos = 0,
		styl = 0,
		itog = 0,
		points = 10,
		names = ['1']

        createChart = function () {
            $('#container').highcharts('StockChart', {
			colors: ["#f45b5b", "#8085e9", "#8d4654", "#7798BF", "#aaeeee", "#ff0066", "#eeaaee",
      "#55BF3B", "#DF5353", "#7798BF", "#aaeeee"],
			 chart: {
							backgroundColor: null,
							 borderColor: '#EBBA95',
							borderWidth: 2,
							borderRadius: 10,
							
							 style: {
                fontFamily: 'serif',
				fontSize:"15px",
            },
	events : {
                           },
					 



            

                       zoomType: 'x',
            },
              
				
//-----------------------------НАСТРОЙКА КНОПОК ВРЕМЕННЫХ ИНТЕРВАЛОВ--------------------
            rangeSelector: {
          							
                buttons: [
				],
				inputEnabled: false,
               //  inputDateFormat: '%d.%m.%Y', // Меняем на привычный для нас формат даты в интервалах
				//	inputEditDateFormat: '%d.%m.%Y',
					 buttonTheme: {
										 fill: 'white',
										 stroke: '#C0C0C8',
										 'stroke-width': 1,
										 states: {
											select: {
											   fill: '#D0D0D8'
											}
										 },
										 width: 60,
				  },
					selected: 4 // Какая кнопка выбрана по умолчанию
				},

//-------------------------------------------------ОСЬ У---------------------------------------------------------
xAxis: [{
			gridLineWidth: 1,
          
            }],
			
	  yAxis: [
		   { // Правая ось
					title : {
						text : 'Температура в центре(2) °C',
					   
					},
				  
		  
					lineWidth : 3,
			
					tickWidth : 3,
					tickLength : 6,
			 
					labels : {
						align : 'left',

						formatter : function () {
							return Highcharts.numberFormat(this.value, 1, '.', '')+ '°';
						}
					},

				},
             { // левая ось
			  opposite: false,
				title : {
					text : 'Температура на потолке °C',//Название оси
				},
                lineWidth : 3,//толщина шкалы
                tickWidth : 3,//толщина штриха
                tickLength : 6,//длина штриха
				labels : {
					align : 'right',//Сторона подписи оси
		
					formatter : function () {
						//return Highcharts.numberFormat(this.value, 1);//значения по 0,5
						return Highcharts.numberFormat(this.value, 1, '.', '')+ '°';//Значения по сотым
					}
				},

			}

           ],
			
//----------------------------------------------------Настройка легенды-------------------------------------
 legend: {
            enabled: true,
            align: 'center',
            borderWidth: 2,
         //   layout: 'vertical',
            verticalAlign: 'bottom',
		//	itemDistance: 50,//Дистанция между чартами
           
            shadow: true,
        },
		

//----------------------------------------------------Подсказки---------------------------------------------
//------------------------------------------------------------------------------------------------------			
               	tooltip: {
    backgroundColor: 'rgba(250, 250, 250, .85)', // Фон немного темнее
    borderColor: 'rgba(100, 100, 100, .90)', // Цвет границы (по умолчанию меняется автоматом)
    xDateFormat: '%d.%m.%Y %H:%M', // Наш формат даты
    // Тут немного увеличиваем размер даты
    headerFormat: '<span style="font-size: 12px">{point.key}</span><br/>',
    // Формат надписей в подсказке, названия цветом графика, а значения жирным
						 pointFormat: '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b><br/>',
},
//----------------------------------------------------PlotOptions------------------------------------
  plotOptions: {
        series: {
            states: {
                hover: {
                    enabled: true,
                    lineWidth: 3
                }
            }
        }
    },
//-------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------
            title: {
                text: 'Система термомониторинга',
				color: 'black',
         fontSize: '16px',
         fontWeight: 'bold'
			          },
			credits : {
			enabled : false //выключаем логотип чарта
						},
            subtitle: {
                text: 'График построен за ...',
            },
//------------------------------------------------------ДАННЫЕ------------------------------------------------

                series: seriesOptions,
				
            });
        };
		
    $.each(names, function (i, name) {
	

        $.getJSON('http://sa1.ru/jsonp.php?name=' + name.toLowerCase(),    function (data) {
			
			alert (data);
		
										
			            seriesOptions[i] = {
						
								yAxis: yAxiss,
								name: label,
								data: data,
								
								 type: 'spline',
								 
								dashStyle: styl,

						
							 tooltip: {
															valueSuffix: tips,//tips 

																	},
											
					
								marker : {
										enabled : false,//если true то отображает каждую точку на графике
										radius: 4,
										states : {
													hover : {
															enabled : true,//появление маркеров при наведении
															radius : 5,//Радиус обозначения точки на графике
																}
														}
								},
					
            };
            
			seriesCounter += 1;

            if (seriesCounter === names.length) {
                createChart();
				
            }
        });
	
    });
	

	
});
Ответить с цитированием
  #4 (permalink)  
Старый 04.06.2015, 10:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Efiop1
это использовал, так как данные для библиотеки Highstock должны быть в таком формате [[1354193753,1],...,[1431069592,2]]
Нельзя так поступать. Благо что у вас числа передаются, и прокатывает, а если строки передать надо, тогда уже не прокатит.
Нужно получать числа как числа, значит поступайте так:
echo json_encode($json, JSON_NUMERIC_CHECK);

И будете получать числа, а не "грязным" способом действовать. Константа JSON_NUMERIC_CHECK доступна начиная с версии 5.3.3.

Я не буду разбираться во все строках, но если запрос к серверу не выдает результата, значит запрос не получает параметров, и нужно проконтролировать это здесь:

после строки 180 добавить - console.log(i, name), есть ли что вообще?

А строки 183 - 224 на время проверки заремировать.
Ответить с цитированием
  #5 (permalink)  
Старый 04.06.2015, 11:04
Новичок на форуме
Отправить личное сообщение для Efiop1 Посмотреть профиль Найти все сообщения от Efiop1
 
Регистрация: 04.06.2015
Сообщений: 3

Сообщение от laimas Посмотреть сообщение
Нельзя так поступать. Благо что у вас числа передаются, и прокатывает, а если строки передать надо, тогда уже не прокатит.
Нужно получать числа как числа, значит поступайте так:
echo json_encode($json, JSON_NUMERIC_CHECK);

И будете получать числа, а не "грязным" способом действовать. Константа JSON_NUMERIC_CHECK доступна начиная с версии 5.3.3.

Я не буду разбираться во все строках, но если запрос к серверу не выдает результата, значит запрос не получает параметров, и нужно проконтролировать это здесь:

после строки 180 добавить - console.log(i, name), есть ли что вообще?

А строки 183 - 224 на время проверки заремировать.
Спасибо большое!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать данные в другую панель из выбранной строки таблицы. layout: 'card'. Пролетарий ExtJS 5 03.06.2015 22:53
Отобразить данные формы на другой странице Bumer Events/DOM/Window 10 02.04.2015 18:10
Передать данные через Ajax zahod5277 AJAX и COMET 1 20.01.2015 22:31
Функция не получает данные VolodinAS AJAX и COMET 3 14.11.2013 10:28
Не совсем обычный фрейм и выезжающий текст при наводе на картинку. amaz245 Элементы интерфейса 35 25.12.2010 17:29