Конфликт обработки 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);то график строится. В чем причина? Неужели и правда конфликт с библиотекой? Ведь точно такой же парсинг ниже работает. |
SergeyAndSmart,
у вас есть success в нём всё и делайте Цитата:
|
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(); } }); }); |
рони, спасибо, понял. data, возвращаемая AJAX у меня выглядит так:
![]() Как мне дальше с JSON данными работать? Пробовал получить длину массива dht22 так data.dht22.lenght не работает. Так тоже значения не получает data.dht22[0].temperature. |
SergeyAndSmart,
возможно так строка 15 data: data.dht22 |
рони, не так не работает, там надо для 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); |
SergeyAndSmart,
укажите тип JSON в ajax либо jQuery.getJSON() либо в параметрах $.ajax dataType: 'json', |
рони, огромнейшее спасибо, все работает!
|
Часовой пояс GMT +3, время: 16:46. |