- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让 highcharts 通过 AJAX 查询动态更新图表。目前,我让服务器为新图表返回 JSON,然后我使用 parseJSON 对其进行解析。这一切都很好,除了一件事 - highcharts 代码的常用格式不是真正的 JSON,所以图表的格式在文件中是不同的。 (例如,对于正确的 JSON,type: 'bar' 必须变为 "type": "bar"。)
这是主页的代码:
<script type='text/javascript' src='//code.jquery.com/jquery-1.9.1.js'></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
<script>
$(function () {
$('#container').highcharts({
title: {
text: 'Monthly Average Temperature',
x: -20,
style: {
color: 'rgb(103,103,103)',
fontFamily: '"Trebuchet MS", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Tahoma, sans-serif'
}
},
subtitle: {
text: 'Source: WorldClimate.com',
x: -20,
style: {
color: 'rgb(103,103,103)'
}
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
yAxis: {
title: {
text: 'Temperature (C)',
style: {
color: 'rgb(103,103,103)'
}
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
series: [{
name: 'Tokyo',
color: 'rgb(62,144,200)',
data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6],
point: {
events: {
click: function() {
$.get('thetest/test.php', function (data) {
var temp=jQuery.parseJSON(data);
$('#container').highcharts(temp);
})
}
}
}
}, {
name: 'New York',
color: 'rgb(128,183,101)',
data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
}, {
name: 'Berlin',
color: 'rgb(145,111,79)',
data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
}, {
name: 'London',
color: 'rgb(207,186,132)',
data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
}, {
name: 'Last One',
color: 'rgb(70,95,119)',
data: [13.9, 14.2, 15.7, 18.5, 21.9, 25.2, 27.0, 26.6, 24.2, 20.3, 16.6, 14.8]
}]
});
});
</script>
这是返回的 JSON:
{
"chart": {
"type": "bar"
},
"title": {
"text": "Historic World Population by Region"
},
"subtitle": {
"text": "Source: Wikipedia.org"
},
"xAxis": {
"categories": ["Africa", "America", "Asia", "Europe", "Oceania"],
"title": {
"text": null
}
},
"yAxis": {
"min": 0,
"title": {
"text": "Population (millions)",
"align": "high"
},
"labels": {
"overflow": "justify"
}
},
"tooltip": {
"valueSuffix": " millions"
},
"plotOptions": {
"bar": {
"dataLabels": {
"enabled": true
}
}
},
"legend": {
"layout": "vertical",
"align": "right",
"verticalAlign": "top",
"x": -40,
"y": 100,
"floating": true,
"borderWidth": 1,
"backgroundColor": "#FFFFFF",
"shadow": true
},
"credits": {
"enabled": false
},
"series": [{
"name": "Year 1800",
"data": [107, 31, 635, 203, 2]
}, {
"name": "Year 1900",
"data": [133, 156, 947, 408, 6]
}, {
"name": "Year 2008",
"data": [973, 914, 4054, 732, 34]
}]
}
这当然完美地工作...但是有什么方法可以以标准“highcharts”格式而不是 JSON 格式从 test.php 传回结果?
最佳答案
这里有一个误解...Highcharts 没有专门针对您在问题中提出的问题设计的配置“格式”。 Highcharts 采用 Javascript 配置对象,这与 JSON 不同。
您是否听过这样一句话:“每个正方形都是一个矩形,但每个矩形都不是正方形”?这句话的相似之处在于,所有的JSON都可以解释成Javascript,但不是所有的Javascript都可以解释成JSON。这很重要,因为它意味着 JSON 可以被视为 Javascript 的子集,这意味着它可以被解释为 JavaScript(尤其是 Javascript 对象)。然后您可以从服务器返回 JSON 并将其转换为 JavaScript 对象以用作您的任意图表配置对象。
之所以相关,是因为看起来从您的服务器返回的是 Javascript 对象定义(这是 Highcharts 实际使用的),而不是 JSON。问题是您需要将文本转换为 Javascript 并作为 Javascript 运行。这种情况有两种解决方案,其中一种比另一种好得多。
由于您目前正在将 Javascript 对象作为文本返回,因此您可以对该对象使用 eval() 函数。这是一个错误的决定,俗话说“eval is evil”。至于为什么会这样,你可以上网查一下,但你可以毫无问题地使用这条路线。
另一种选择是当您最初存储 highcharts 配置时,或者当您从 php 文件返回它时,您只需确保语法符合 JSON 格式即可。在您的示例中,这似乎不会对您的程序工作方式产生任何影响,只是更难实现。这是解决此问题的正确方法。
关于javascript - 不用parseJSON获取highcharts数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19159459/
我接到了一项任务,要动态管理内存以超越 malloc 的速度。一些要求: 1) 有一个指向结构的指针 2)使用内存“ block ” 3) 内存将通过这样的调用分配 init(memory * mem
是否可以在不使用 visual studio 中的设计器的情况下创建 Crystal 报表文件?我的意思是在 C# 代码中以编程方式创建它。我没有找到任何有用的教程来做到这一点。 最佳答案 使用 Re
我注意到在没有必要的地方使用 Redux,例如我有一个加载该帖子的帖子页面,它是评论。 它们只在该页面上呈现,其他地方不需要,我可以将数据从我的 Post 容器传递给子 Prop 。 Now I wo
我有点困惑。如何在没有 goto 的情况下重构此语句? if(first_expression) { // .... if(second_expression) {
我正在构建一个 JScrollPane 来设置可滚动的 JPanel,其中包含一个 JTextPane 和一个 JTable。 当我加载框架时,我用很长的文本初始化 JTextPane,然后滚动条向下
如何不使用group concat将多行合并为一行? 考虑我有如下表格: 表用户: uid | name ----------- 1 | A 2 | B 表元: uid | metaid |
除了 NSUserDefaults 还有什么其他方法可以保存和取回自定义对象?对我来说,NSUserDefaults 变得太麻烦了(它没有正确保存),所以我正在寻找另一种保存数据的方法。 (我已经贴出
为简洁起见,请引用 my template 的描述(您的网络浏览器可能会给您关于该网站的误报),fiddle用我的一大块代码和我的 H.T.M.L 示例制作。文件。
如何在没有 javascript 代码的情况下仅使用 html 和 css 制作模态? 我有一个无法使用 javascript 的元素,但我需要模态。 W3.CSS W3.CSS Mo
我想创建一个干净的解决方案来处理客户端丢失的图像 使用 到目前为止,handleErrors 看起来像这样: function handleErrors() { image.onerror
有没有一种方法可以不使用 JavaScript 来更改指定元素的 CSS 样式? 我不想使用 JS,因为有些浏览器不支持,或者已经禁用它... 具体例子: 我有 2 个 DIV(#menu 和 #co
如何在不使用 LINQ 的情况下过滤数据表?我目前正在使用 .NET 2.0;因此,我无法使用 LINQ。我有一个返回房间/价格对的存储过程。我想过滤数据表,以便它会选择特定房间的所有费率,所以基本上
我正在使用 jQuery triggerHandler() 触发一些 DOM 事件 stackoverflow $(document).ready(function(
这个问题在这里已经有了答案: Cleanest way to write retry logic? (30 个答案) 关闭 9 年前。 有没有更好的方法可以不使用 goto 来编写这段代码?这看起来
我试图在没有 jquery 的情况下找到具有特定标签名称的最接近的元素。当我点击 我想访问 对于那张 table 。建议?我阅读了有关偏移量的信息,但并没有真正了解太多。我应该只使用: 假设 th 已
我想将从 ajax 调用获得的结果转换为 JavaScript 数组。如何在不使用 jQuery 的情况下做到这一点? 或者也可以只循环 json 数组而不转换为 JavaScript 数组。 现在我
我需要具有随机非重复值的数组。我发现用 includes() 解决问题,但我想在没有它的情况下进行。 代码 function rand(min, max){ return Math.round
我是网络编程的新手(即不到一个月)。 我想做的是为 FAQ 列表创建一个漂亮的平滑隐藏/显示效果,如本网站所示: http://www.hl.co.uk/pensions/sipp/frequentl
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
这个问题在这里已经有了答案: How to pass arguments to an included file? (9 个回答) 关闭 6 年前。 所以我的索引页是这样的 "") {
我是一名优秀的程序员,十分优秀!