04.06.2015, 08:50
|
Новичок на форуме
|
|
Регистрация: 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>
<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);
|
|
04.06.2015, 09:44
|
Профессор
|
|
Регистрация: 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)
Кто, когда на клиенте вызывает это, передает параметры и т.д.? Код наверное показывать надо.
|
|
04.06.2015, 10:17
|
Новичок на форуме
|
|
Регистрация: 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();
}
});
});
});
|
|
04.06.2015, 10:32
|
Профессор
|
|
Регистрация: 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 на время проверки заремировать.
|
|
04.06.2015, 11:04
|
Новичок на форуме
|
|
Регистрация: 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 на время проверки заремировать.
|
Спасибо большое!
|
|
|
|