[英]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”:“ Statuss”,“ data”:[[“ WSCH”,377],[“ WMATL”,4],[“ WAPPR”,349],[“ NCOMP” ,3],[“ INPRG”,56],[“ COMP”,18],[“ CLOSE”,697],[“ APPR”,420]]}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.