7

よろしくお願いします。

phantomjs Highcharts エクスポート サーバーをセットアップしたいと考えています。入力および出力の jpeg 画像ファイルとして json オプションを受け入れる必要があります。

これが私がすることです:

  1. このリポジトリからサーバー側の js コードをダウンロードします: https://github.com/highslide-software/highcharts.com/tree/master/exporting-server/phantomjs
  2. 私はphantomjs 1.6.0をダウンロードします
  3. 走る

    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 config object (JSON)」をクリックします。私が得るのはこのメッセージだけです:

レンダリングの失敗: SyntaxError: JSON 文字列を解析できません

同じリクエストを 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 ファイルにタイプミスが見つかりました。誰でもこれについて私を助けることができますか? どうもありがとう。

4

4 に答える 4

6

私はついに問題を解決しました。いわゆる「JSON」文字列に誤解があると思います。Javascript エクスポート サーバーは、実際の「JSON」文字列を受け入れません。実際の「JSON」文字列では、すべての文字列が引用されます。

 {
       "value": [1,2,3],
       "name": "jack"
 }

エクスポート サーバーが受け入れるのは、実際には次のようなJavascript オブジェクトを作成するための Javascript コードです。

 {
       value: [1,2,3],
       name: "jack"
 }

これは、生成された Web ページでサーバーがこの文字列を Javascript コードの一部として使用するためです。JSON文字列をこの形式に変換してサーバーに渡す小さな関数を作成しましたが、最終的に機能します。

var getUnQuotedJsonString = function (str) {
  return str.replace(/"\w+":/g, function(s, key) {
    return s.replace(/"/g, "");
  });
}
于 2013-07-18T06:43:50.907 に答える
-1

誰かが結果から引用符を削除しようとしている場合、PHPでこれを解決するために同様の関数を作成しましたjson_encode-

function unQuote($str){
return preg_replace_callback('/"\w+":/',
                        function ($match){
                             return str_replace('"', '', $match[0]);
                         }, 
                         $str );
}
于 2015-06-04T18:10:38.280 に答える
-1

これは、Phantoms HTTP サーバーが起動するためです。

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

パラメータは JSON 形式で送信されることを想定しています。ドキュメントの「ウェブサーバーとして開始」の段落をお読みください。

好奇心から...どのタイプミスを見つけましたか?

于 2013-07-15T12:38:57.717 に答える