Javascript 拆分多个flot图表的嵌套JSON
我制作了一个简单的ajax脚本(参见代码),它从用户按下的复选框中获取ID值,查询数据库并为flot构建一个嵌套的JSON数组(为每个选择的ID包含一个数组)。基本上,一切工作都很完美,所有的数组都显示在图表中。然而,我正在寻找一个解决方案来获取数据,但是我不想在同一个图中绘制它们,而是想在一个单独的图中绘制嵌套JSON数组中的每个JSON数组Javascript 拆分多个flot图表的嵌套JSON,javascript,jquery,arrays,json,flot,Javascript,Jquery,Arrays,Json,Flot,我制作了一个简单的ajax脚本(参见代码),它从用户按下的复选框中获取ID值,查询数据库并为flot构建一个嵌套的JSON数组(为每个选择的ID包含一个数组)。基本上,一切工作都很完美,所有的数组都显示在图表中。然而,我正在寻找一个解决方案来获取数据,但是我不想在同一个图中绘制它们,而是想在一个单独的图中绘制嵌套JSON数组中的每个JSON数组 $.ajax({ type: "POST", url: "includes/getjson.php", data: $('.id
$.ajax({
type: "POST",
url: "includes/getjson.php",
data: $('.ids:checked').serialize(),
dataType: "json",
success: function(datasets){
var options = {
series: {
lines: { show: true },
points: { show: true }
},
xaxis: {
mode: "time",
timeformat: "%H:%M:%S",
twelveHourClock: true,
timezone: "browser"
},grid: {
hoverable: true,
clickable: true
}
}
$.plot($("#placeholder"), datasets, options);
}
});
我在考虑动态创建所需数量的div,可能使用for循环,然后在JSON中的每个数组中循环。但我不知道该怎么做?我可以制作自己的解析器并删除外部数组,这样我就可以简单地拆分数组,但也许有更好的解决方案?
另一种解决方案可能是对复选框中的每个id输入进行.ajax调用
这里可以看到一个选择了ID的JSON示例
我刚刚做过类似的事情。
我需要一个diagram来表示我在db中拥有的每个通道变量。我所做的是将通道名称列表放入ViewBag中,并使用razor为以下图表创建正确数量的div:
<div id="chartsDiv" class="column">
@{
int index = 0;
int heightDiv = 85 / (ViewBag.Channels.Count + 1);}
@foreach (var item in ViewBag.Channels)
{
<div id="@item.Replace(" ","")" title="@item" class="plot" style="height:@heightDiv%;"></div>
index++;
}
</div>
我从ViewBag中获取所有信息,但您可以很容易地从ajax调用中获取序列化json
我希望有帮助!有什么不清楚的吗?很遗憾,我们的解决方案不包括使用ASP.NET。这是纯PHP、HMTL和JQueryYou可以使用ajax和javascript做同样的事情。根据您的示例,我不太确定如何做
var graphsArray = [];
var dataDetail;
$(function () {
var channelstxt = ('@ViewBag.ChannelsSerialized').replace(/"/g, '"')
var channels = JSON.parse(channelstxt);
var seriestxt = ('@ViewBag.SeriesJson').replace(/"/g, '"');
var seriesTab = jQuery.parseJSON(seriestxt);
$.each(channels, function (index, value) {
var elem = document.getElementById(value.toString().replace(/\s/g, ''));
var graph = $.plot(elem, [seriesTab[index]], getOptions(value));
graphsArray.push(graph)});
});