tuo*_*tuo 7 export highcharts phantomjs
非常感谢提前.
我想设置一个phantomjs Highcharts导出服务器.它应该接受json选项作为输入和输出jpeg图像文件.
这是我做的:
跑
phantomjs highcharts-convert.js -host 127.0.0.1 -port 3001
Run Code Online (Sandbox Code Playgroud)然后我尝试在此站点中使用客户端代码:http://export.highcharts.com/demo来发送请求.我更改了表单操作URL:
<form id="exportForm" action="./" method="POST">
Run Code Online (Sandbox Code Playgroud)
对此:
<form id="exportForm" action="http://0.0.0.0:3001" method="POST">
Run Code Online (Sandbox Code Playgroud)
并单击"Highcharts配置对象(JSON)".我得到的就是这个消息:
渲染失败:SyntaxError:无法解析JSON字符串
由于可以在Highcharts服务器中正确处理相同的请求,因此错误必须位于我正在使用的Highcharts服务器端js代码中.我也试过以下命令:
phantomjs highcharts-convert.js -infile options.js \
-outfile chart.png -scale 2.5 -width 300
Run Code Online (Sandbox Code Playgroud)
使用此代码options.js:
{
infile: {
xAxis: {
categories:['Jan','Feb','Mar','Apr',
'May','Jun','Jul','Aug',
'Sep','Oct','Nov','Dec']
},
series:[
{
data:[29.9,71.5,106.4,129.2,
144.0,176.0,135.6,148.5,
216.4,194.1,95.6,54.4]
}]
},
callback: function(chart){
chart.renderer
.arc(200,150,100,50,-Math.PI,0)
.attr({fill:'#FCFFC5',stroke:'black','stroke-width':1})
.add();
},
constr: "Chart",
outfile: "//tmp//chart.png"
}
Run Code Online (Sandbox Code Playgroud)
它成功地生成了png.
我猜Highchart没有在导出函数中做太多工作,我在highcharts-convert.js文件中发现了一些拼写错误.谁可以帮我这个事?非常感谢.
我终于解决了这个问题.我想在所谓的"JSON"字符串中存在误解.Javascript导出服务器不接受任何真正的"JSON"字符串.一个真正的"JSON"字符串将引用所有字符串,有些事情就像
{
"value": [1,2,3],
"name": "jack"
}
Run Code Online (Sandbox Code Playgroud)
导出服务器接受的实际上是一段用于创建Javascript对象的Javascript代码,如:
{
value: [1,2,3],
name: "jack"
}
Run Code Online (Sandbox Code Playgroud)
这是因为服务器将使用此字符串作为生成的网页中的Javascript代码的一部分.我写了一个小函数来将JSON字符串转换为这种格式并将其传递给服务器,它最终有效.
var getUnQuotedJsonString = function (str) {
return str.replace(/"\w+":/g, function(s, key) {
return s.replace(/"/g, "");
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8839 次 |
| 最近记录: |