这是我的第一个要求,我已经阅读了与此问题相关的许多其他相关文章,但我仍然陷入困境,几乎无能为力…因此,非常感谢您的帮助!
我在Page1.php上具有以下Highcharts对象,并且正在使用AJAX在页面加载以及下拉选项更改时从Page2.php获取数据。
(为了便于阅读而被截断):
$(document).ready(function() {
var e = document.getElementById("selOption"); //<--- This is the dropdown
var domText = e.options[0].text;
var domID = e.options[e.selectedIndex].value;
var options = {
chart: {
renderTo: 'linechart',
type: 'line'
},
title: {
text: 'Title for ' + domText
},
subtitle: {
text: ''
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: {
month: '%b %e, %Y',
year: '%Y'
}
},
yAxis: {
title: {
text: 'Important Values'
},
reversed: true,
min: 0,
max: 100
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
Highcharts.dateFormat('%b %e', this.x) +': '+ this.y;
}
},
series: []
};
$.get('Page2.php?domID=' + domID,function(data) {
$.each(data, function(key,value) {
//var series = {};
//series.name.push(value);
//series.data.push([value]);
options.series.push(data);
//alert(data);
});
var linechart = new Highcharts.Chart(options);
});
});
Page2.php具有以下发送回json的信息:
$sqlSelect = "SELECT Item1,Item2,Item3 FROM... ";
$result = mysql_query($sqlSelect);
while ($item = mysql_fetch_assoc($result)) {
$name = $item['Item1'];
$date = str_replace("-",",",$item['Item2']);
$pos = $item['Item3'];
$arr = array("name"=>$name,"data"=>"[Date.UTC(".$date."), ".$pos." ],");
echo json_encode($arr);
}
我的json返回看起来像这样:
{"name":"Item1","data":"[Date.UTC(2011,11,08), 4 ],"}
{"name":"Item1","data":"[Date.UTC(2011,11,08), 2 ],"}
加载图表时,它会在底部填充135系列名称(?!?!?!),并且在折线图中似乎不会显示点。
如果我删除双引号并将结果硬编码到series数组中,则效果很好(尽管我注意到该示例在对象之间似乎没有逗号。
谢谢您的所有帮助…特别是快速的回复!;-)
解决了:
我找到了一个最终成功的答案!令人沮丧的是,我花了几天的时间,因为Highcharts并没有很好地对其进行记录(和/或也许我对jQuert和JavaScript的理解仍处于新手水平)。
答案是 不要 在您的json对象中将X /
Y数据作为预制数组发送,而只是将构成Date(x值)和Value(y值)的数字作为逗号分隔值列表发送一个json对象,然后在客户端进行解析和推送。
例如: 我最初是想让我的PHP发送类似
[{"name":"Name 1","data":["[Date.UTC(2011,11,08), 4 ]","[Date.UTC(2011,11,09), 4 ]","[Date.UTC(2011,11,10), 4 ]","[Date.UTC(2011,11,11), 4 ]","[Date.UTC(2011,11,14), 3 ]"]}
但是我真正需要做的是发送类似
[{"name":"Name 1","data":["2011,11,08, 4","2011,11,09,4"....`
第一步是确保将“系列”选项设置为空数组 series: []
(我之所以这样提,是因为我看到了其他答案,但答案有所不同)。
然后,在getJSON函数中,需要为要引入的每个对象创建一个新对象,其中还包括一个空的“数据”数组(请参见下面的“ var系列”)。
然后嵌套一些$.each
循环以解析并将数据推入其必要的数组,并填充每个对象的“名称”:
$.getJSON('http://exmaple.com/getdata.php?ID=' + id, function(data) {
$.each(data, function(key,value) {
var series = { data: []};
$.each(value, function(key,val) {
if (key == 'name') {
series.name = val;
}
else
{
$.each(val, function(key,val) {
var d = val.split(",");
var x = Date.UTC(d[0],d[1],d[2]);
series.data.push([x,d[3]]);
});
}
});
options.series.push(series);
});
在上面的代码之后,您需要实例化图表:
var chart = new Highcharts.Chart(options);
就是这样!
希望其他人会发现这个答案有用,并且不需要几天来试图解决这个问题。:-)
问题内容: 我有以下在运行时生成的json数组。因此,名称/数据对的数量不同。 我想将此数据传递给highcharts中的系列。 这就是我目前的做法。 但是,如果更改数组中元素的数量,则此方法将无效。 我该如何解决这个问题?演示代码将帮助我。 问题答案: 我解决了问题 更改了json数组,如下所示: 现在,将其直接传递到highcharts中的系列。 做完!!!!!
我有以下运行时生成的json数组。因此,名称/数据对的数量有所不同。 我想将这些数据传递到highcharts系列中。 这就是我目前的做法。 但是如果数组中元素的数量改变了,这就不起作用了。我该如何解决这个问题?演示代码会对我有帮助。 我已经考虑了以下问题,但我无法解决这个问题。 动态添加到高图表 海图系列数据阵列
问题内容: 有什么方法可以将一些其他数据传递到将用于显示在图表“工具提示”中的系列对象? 例如 在这里,我们只能对系列使用series.name,this.x和this.y。可以说我需要随数据集一起传递另一个动态值,并且可以通过系列对象进行访问。这可能吗? 谢谢大家。 问题答案: 是的,如果您按照如下所示设置系列对象,每个数据点都是一个哈希,则可以传递额外的值: 在工具提示中,您可以通过传入的对象
问题内容: 我在过去的3个小时中一直在四处寻找并找到答案的这段代码遇到了问题。由于不成功,我将发布代码并询问我在Web服务上应具有哪种参数来处理此请求: 现在,我应该能够获得“ dataToSend”的哪种签名? 我试过了: 和 并且 问题答案: 尝试将数据作为字符串而不是对象传递,即: 这样做的原因是,如果您将一个对象指定为数据,那么jQuery将使用查询字符串格式对数据进行序列化,而服务器将直
我是JS的初学者,以前从未接触过PHP。经过几个小时的搜索,我拼凑出了这一块。我想做的是,有一个简单的表单,里面有几个字段,这些字段被保存到一个JSON文件中。我希望每个后续条目都附加到文件的末尾,这样每个JSON对象就是这个人的名字和他们的注释。 通过下面的代码,我已经成功地将一些东西传递给PHP脚本,并将条目追加到json文件中。但是在json文件中显示的是这样的(在两个条目之后): 这是我的
我有一个通过Spring Data Rest序列化@关系实体到JSON的问题。每当我创建@关系实体时,我都会在将图序列化到JSON时遇到无限递归。 使用JSOG试图呈现图形只会导致不同的、格式错误的JSON响应。 虽然我可以通过使用@JsonManaged参考来避免这个问题,但它不能解决这个问题,因为我想从两个节点公开关系。 我已经创建了一个简单的应用程序来展示这个问题。可以在这里找到:https