У меня есть высокоточный график в файле с именем charts.php, который перезагружает данные графика из вторичного файла с именем data.php. Поскольку у меня есть 5 рядов в моем графике highstock, мне нужно 5 раз вызывать файл data.php, каждый раз используя другую переменную, но когда я устанавливаю переменную в моем файле charts.php, он использует только последнее установленное значение этого переменная. Возможно ли это решить, или это так, как работает PHP? Нужно ли создавать 5 отдельных файлов data.php, чтобы это работало?
Вот как выглядит мой код (для краткости показано 2 серии):
var chart = new Highcharts.StockChart({
chart: {
renderTo: 'chart'
},
title : { text : 'MyChart' },
series : [
{
name : 'Unit 0',
data : [],
tooltip: { valueDecimals: 1, valueSuffix: ' kW' },
},
{
name : 'Unit 1',
data : [],
tooltip: { valueDecimals: 1, valueSuffix: ' kW' },
}
]
});
<?php $_SESSION["unit"] = 0; ?>
$.getJSON( "data.php", function (data) {
chart.series[0].setData( data );
});
<?php $_SESSION["unit"] = 1; ?>
$.getJSON( "data.php", function (data) {
chart.series[1].setData( data );
});
Таким образом, проблема заключается в том, что и series [0], и series [1] используют последнее значение моей переменной, которое в данном случае равно $ _SESSION [«unit»] = 1. Является ли способ заставить эту работу работать? Есть ли лучшие альтернативы?
Возможно, если бы я мог создать данные для всех рядов в одном файле и каким-то образом разделить эти данные и передать их в серии [0] и серии [1] по отдельности, но я понятия не имею, как это сделать ..
Любая помощь приветствуется.
Может быть, вы могли бы изменить свой файл data.php, поэтому вместо использования $_SESSION["unit"]
чтобы определить, какую переменную использовать, используйте $_GET["unit"]
вместо. Тогда в вашем коде выше это будет:
$.getJSON( "data.php?unit=0", function (data) {
chart.series[0].setData( data );
});
$.getJSON( "data.php?unit=1", function (data) {
chart.series[1].setData( data );
});
Это зависит от ваших потребностей, если значения $ unit всегда одинаковы, я бы просто вызвал data.php один раз и обновил бы все графики сразу, используя ответ JS.
Если у $ unit есть динамическая переменная, я бы отправил ее вместе с функцией $ .getJSON.
var data = {
unit: $_GET['unit']
};
$.getJSON( "data.php", data, function (response) {
updateGraph(graph, response);
});
Чтобы узнать больше о getJSON о структуре функции, посетите http://api.jquery.com/jquery.getjson/