如何使用变量作为 js 代码
How to use a variable as js code?
我正在尝试使用jQuery(或highcharts)将数据添加到下面的函数中。问题是如何在不使用 eval 的情况下将数据嵌入到 javascript 代码中,因为我必须将所有代码编写为字符串?
function pie(data)
{
$(function () {
$('#renderingdiv').highcharts({
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false
},
title: {
text: 'Browser market shares at a specific website, 2010'
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
color: '#000000',
connectorColor: '#000000',
format: '<b>{point.name}</b>: {point.percentage:.1f} %'
}
}
},
series: [**data**]
});
});
};
数据如下所示:
{'
type: 'pie','
name: 'Statuses','
data: ['
[WSCH, 377]'
,'
[WMATL, 4]'
,'
[WAPPR, 349]'
,'
[NCOMP, 3]'
,'
[INPRG, 56]'
,'
[COMP, 18]'
,'
[CLOSE, 697]'
,'
[APPR, 420]'
'
]'
}
请问有什么想法吗?
这个快速而脏的函数将您的数据转换为有效的 JSON 并返回一个对象。
function parseData(data) {
data = data
// remove '+line endings
.replace(/'['n'r]+/g, '')
// insert double quotes for keys
.replace(/(['[{,])'s*('w+)([,:])/g, '$1"$2"$3')
// replace values single quotes with double
.replace(/(:)'s*'('w+)'s*'/g, '$1"$2"');
return JSON.parse(data);
}
当然,您应该改进它以处理极端情况。
演示:http://jsfiddle.net/qq98D/2/(导致控制台输出)
但这只是一个解决方法。真正的解决方案是更改服务器输出以返回有效的 JSON。
结果(JSON 编码):
{"type":"pie","name":"Statuses","data":[["WSCH",377],["WMATL",4],["WAPPR",349],["NCOMP",3],["INPRG",56],["COMP",18],["关闭",697],["APPR",420]]}
相关文章:
- 为什么indexOf在这个js代码中不起作用
- js代码从jQuery转换为原生代码
- JS代码中的减号
- 谷歌地图Api和JS代码不工作
- HTML 5 和 3.js 代码不会在网页上显示任何内容
- 为什么这个JS代码打印未定义
- JS代码在jsbin中有效,在jsfiddle或Chrome/Safari中无效
- 页面加载后加载简单的JS代码
- 扩展JS代码
- 如何使用js代码转发reactjs路由器
- 用js代码重新定位文本
- 即使被信号处理程序中断,node.js代码也会一直运行到完成吗
- JS代码使IE9和Safari冻结,在Opera中不起作用
- 分析JS代码以在客户端获取cookie
- 改进js代码以删除全局变量和函数
- 对php文件的Ajax调用返回该文件中的JS代码,而不是执行它
- 在单独的上下文中运行 js 代码并访问其全局变量
- 这个 ajax.js 代码有什么问题
- 如何使用 GetValues 使用 Jint 运行 Js 代码
- JS代码有什么问题,让我知道代码是否可以改进