我能';不要让Highcharts phantomJs导出服务器工作

我能';不要让Highcharts phantomJs导出服务器工作,highcharts,export,phantomjs,Highcharts,Export,Phantomjs,非常感谢 我想设置一个phantomjs Highcharts导出服务器。它应该接受json选项作为输入和输出jpeg图像文件 以下是我的工作: 我从这个repo下载服务器端js代码: 我下载了phantomjs 1.6.0 跑 phantomjs highcharts-convert.js -host 127.0.0.1 -port 3001 然后我尝试在这个站点中使用客户端代码:发送请求。我从以下位置更改了表单操作url: <form id="exportForm" act

非常感谢

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

以下是我的工作:

  • 我从这个repo下载服务器端js代码:
  • 我下载了phantomjs 1.6.0
  • phantomjs highcharts-convert.js -host 127.0.0.1 -port 3001
    
  • 然后我尝试在这个站点中使用客户端代码:发送请求。我从以下位置更改了表单操作url:

        <form id="exportForm" action="./" method="POST">
    
    使用
    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字符串时,遇到了相同的错误,该字符串的长度超过了highcharts exporter WAR文件所在服务器所能接受的长度。检查服务器中的消息长度参数。确保它足够长,可以容纳发送的请求。现在,由于您没有提到您正在使用的导出服务器(java或PHP),我想您实际上没有为导出服务器设置web前端,您只是设置了headless命令行导出(phantomJS+一些highcharts js文件)。要在前端使用导出服务器(如用户单击网页上的导出按钮),还需要设置或。

    这是因为由启动的Phantoms HTTP服务器

    phantomjs highcharts-convert.js -host ... -port ...
    
    需要以JSON格式发送参数。请阅读,paragraph“作为Web服务器启动”


    出于好奇。。。你发现了什么错字

    我终于解决了这个问题。我猜在所谓的“JSON”字符串中存在误解。Javascript导出服务器不接受任何真正的“JSON”字符串。一个真正的“JSON”字符串会引用所有字符串,比如

     {
           "value": [1,2,3],
           "name": "jack"
     }
    
    导出服务器接受的实际上是一段用于创建Javascript对象的Javascript代码,如:

     {
           value: [1,2,3],
           name: "jack"
     }
    
    这是因为服务器将在生成的网页中使用此字符串作为Javascript代码的一部分。我编写了一个小函数,将JSON字符串转换成这种格式,并将其传递给服务器,它终于可以工作了

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

    如果有人想从
    json\u encode
    -

    function unQuote($str){
    return preg_replace_callback('/"\w+":/',
                            function ($match){
                                 return str_replace('"', '', $match[0]);
                             }, 
                             $str );
    }
    

    有一个“长度”拼写错误为“长度”,这就是我现在所能记得的。谢谢,这个问题现在已经解决了。谢谢你,沃格尔德。新的PhantomJs服务器不需要Java或PHP。这是相对较新的。您可以找到文档。我不知道它是如何工作的,但它确实可以在没有Java或蜡染的情况下工作。Hi tuo,我尝试了这种格式{code>{infle:{xAxis:{类别:['Jan',Feb',Mar',Apr',May',Jun',Jul',Aug',Sep',Oct',Nov',Dec']},系列:[{data:[29.9,71.5,106.4129.2,144.0,176.0,135.6,148 5,216.41941,95.6,54.4]};{回调:“函数(图表)}”,constr:“Chart”,outfile://tmp//Chart.png“}
    但仍不工作。您能给我一个工作示例吗?Don,您的字符串既不是有效的JSON字符串,也不是“创建对象的Javascript代码”。这是一个工作字符串:{infle:{xAxis:{类别:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”]},系列:[{数据:[29.9,71.5106.4129.2144176135.6148.5216.4194.1,95.6,54.4]},构造:“图表”,outfile://tmp//Chart.png}您可以尝试在JS中创建一个对象,并使用JSON.stringify获取正确的JSON字符串。然后,您可以使用我之前提供的函数将其转换为Highcharts export server接受的格式。谢谢您的帮助。我刚刚尝试了这两个字符串,但两个字符串都不起作用。演示页面(export.highcharts.com/demo)似乎使用了完全不同的POST语法,但这似乎也不起作用。有什么想法吗?我在演示页面中尝试了字符串,上面两条评论中的字符串都出现了500个错误,响应
    呈现失败:
    我正在使用Fiddler进行测试,我的帖子标题是:User-Agent:Fiddler-Host:127.0.0.1:3003-Content-Length:227-Content-Type:application/json;字符集=utf-8
    var getUnQuotedJsonString = function (str) {
      return str.replace(/"\w+":/g, function(s, key) {
        return s.replace(/"/g, "");
      });
    }
    
    function unQuote($str){
    return preg_replace_callback('/"\w+":/',
                            function ($match){
                                 return str_replace('"', '', $match[0]);
                             }, 
                             $str );
    }