Javascript.RU

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

Конфликт обработки JSON и библиотеки Canvasjs
Здравствуйте. Для построения графика использую библиотеку Canvasjs. Но сначала я получаю JSON AJAX запросом и потом его парсю.
$.ajax({  
            url: "read_mysql.php",  
            cache: false,  
            success: function(html){  
				$("#content").html(html);
            }  
        });   
		
	var json = document.getElementById("content").innerHTML;
	var data_json = JSON.parse(json);
	alert("test");

Далее идет код построения графика (код взят с библиотеки)
window.onload = function () {	  
    var chart = new CanvasJS.Chart("chartContainer",
	{
		zoomEnabled: true,
		title:{
			text: "График температуры в комнате"
    },
		axisY:{
		includeZero: false
	},
		data: data,  
    });
    chart.render();
   }
   
    var limit = 1000;

    var y = 0;
    var data = []; var dataSeries = { type: "line" };
    var dataPoints = [];
    for (var i = 0; i < limit; i += 1) {
        y += (Math.random() * 10 - 5);
         dataPoints.push({
          x: i - limit / 2,
          y: y
           });
        }
     dataSeries.dataPoints = dataPoints;
     data.push(dataSeries);

Код построения графика в таком случае не работает, как и не выполняется alert(). Однако, если удалить из кода эти две строчки
var json = document.getElementById("content").innerHTML;
var data_json = JSON.parse(json);
то график строится. В чем причина? Неужели и правда конфликт с библиотекой? Ведь точно такой же парсинг ниже работает.
Ответить с цитированием
  #2 (permalink)  
Старый 30.07.2016, 00:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

SergeyAndSmart,
у вас есть success в нём всё и делайте
Сообщение от SergeyAndSmart
В чем причина?
в том что эти строки должны быть в success и парсить ничего ненадо если у вас действительно JSON
Ответить с цитированием
  #3 (permalink)  
Старый 30.07.2016, 00:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

SergeyAndSmart,
примерно так
$(function() {
$.ajax({
            url: "read_mysql.php",
            cache: false,
            success: function(data){
var chart = new CanvasJS.Chart("chartContainer",
  {
    zoomEnabled: true,
    title:{
      text: "График температуры в комнате"
    },
    axisY:{
    includeZero: false
  },
    data: data,
    });
    chart.render();
            }
        });
});
Ответить с цитированием
  #4 (permalink)  
Старый 30.07.2016, 14:47
Новичок на форуме
Отправить личное сообщение для SergeyAndSmart Посмотреть профиль Найти все сообщения от SergeyAndSmart
 
Регистрация: 30.07.2016
Сообщений: 8

рони, спасибо, понял. data, возвращаемая AJAX у меня выглядит так:
Как мне дальше с JSON данными работать? Пробовал получить длину массива dht22 так data.dht22.lenght не работает. Так тоже значения не получает data.dht22[0].temperature.
Ответить с цитированием
  #5 (permalink)  
Старый 30.07.2016, 15:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

SergeyAndSmart,
возможно так строка 15
data: data.dht22
Ответить с цитированием
  #6 (permalink)  
Старый 30.07.2016, 15:55
Новичок на форуме
Отправить личное сообщение для SergeyAndSmart Посмотреть профиль Найти все сообщения от SergeyAndSmart
 
Регистрация: 30.07.2016
Сообщений: 8

рони, не так не работает, там надо для x и y свои данные в массив data пихать и как я понимаю они не в формате JSON. Я про другое, как мне сделать data.dht22.lenght и т.д. вне построения графика и потом данные уже загнать в график этим кодом? Моя идея примерна такова:
var limit = data.dht22.lenght;
    var y = 0;
    var data = []; var dataSeries = { type: "line" };
    var dataPoints = [];
    for (var i = 0; i < limit; i++) {
          x: data.dht22[i].date;
          y: data.dht22[i].temperature;
           });
        }
     dataSeries.dataPoints = dataPoints;
     data.push(dataSeries);
Ответить с цитированием
  #7 (permalink)  
Старый 30.07.2016, 15:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

SergeyAndSmart,
укажите тип JSON в ajax либо
jQuery.getJSON()

либо в параметрах
$.ajax
dataType: 'json',
Ответить с цитированием
  #8 (permalink)  
Старый 30.07.2016, 23:13
Новичок на форуме
Отправить личное сообщение для SergeyAndSmart Посмотреть профиль Найти все сообщения от SergeyAndSmart
 
Регистрация: 30.07.2016
Сообщений: 8

рони, огромнейшее спасибо, все работает!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу распарсить JSON. gorenie jQuery 3 29.11.2013 22:26
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
разбор JSON (средствами библиотеки) jekjuk jQuery 1 12.08.2010 19:10
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10