我无法使Highcharts phantomJs导出服务器工作

非常感谢提前.

我想设置一个phantomjs Highcharts导出服务器.它应该接受json选项作为输入和输出jpeg图像文件.

这是我做的:

>我从这个仓库下载服务器端js代码https://github.com/highslide-software/highcharts.com/tree/master/exporting-server/phantomjs
>我下载phantomjs 1.6.0
>跑

phantomjs highcharts-convert.js -host 127.0.0.1 -port 3001

然后我尝试在此站点中使用客户端代码http://export.highcharts.com/demo发送请求.我更改了表单操作URL:

<form id="exportForm" action="./" method="POST">

对此:

<form id="exportForm" action="http://0.0.0.0:3001" method="POST">

并单击“Highcharts配置对象(JSON)”.我得到的就是这个消息:

Failed rendering:
SyntaxError: Unable to parse JSON string

由于可以在Highcharts服务器中正确处理相同的请求,因此错误必须位于我正在使用的Highcharts服务器端js代码中.我也试过以下命令:

phantomjs highcharts-convert.js -infile options.js \
                                -outfile chart.png -scale 2.5 -width 300

在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"
}

它成功地生成了png.

我猜Highchart没有在导出函数中做太多工作,我在highcharts-convert.js文件中发现了一些拼写错误.谁可以帮我这个事?非常感谢.

解决方法

我终于解决了这个问题.我想在所谓的“JSON”字符串中存在误解. Javascript导出服务器不接受任何真正的“JSON”字符串.一个真正的“JSON”字符串将引用所有字符串,有些事情就像
{
       "value": [1,2,3],"name": "jack"
 }

导出服务器接受的实际上是一段用于创建Javascript对象的Javascript代码,如:

{
       value: [1,name: "jack"
 }

这是因为服务器将使用此字符串作为生成的网页中的Javascript代码的一部分.我写了一个函数来将JSON字符串转换为这种格式并将其传递给服务器,它最终有效.

var getUnQuotedJsonString = function (str) {
  return str.replace(/"\w+":/g,function(s,key) {
    return s.replace(/"/g,"");
  });
}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...