我能';不要让Highcharts phantomJs导出服务器工作
非常感谢 我想设置一个phantomjs Highcharts导出服务器。它应该接受json选项作为输入和输出jpeg图像文件 以下是我的工作:我能';不要让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-convert.js -host 127.0.0.1 -port 3001
<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 );
}