2017-11-29 8 views
0

私はレポートを作成しています。グラフの結果を内部に入れる必要があります。JavascriptからPHPにChartjsをフォームで保存する

私はJavascript(クライアント)とPHP(サーバー)の問題について知っていますが、これを修正する必要があります。

主な問題:グラフをpngファイルとして保存してレポートを作成する必要があります。

私はここで約100の質問を読んでいますが、解決策を見つけることはできませんでした。

グラフを生成するには、ChartJSを使用しています。

私は3つのファイルを作成しましたが、何が間違っているか分かりません。私の例をテストする

PHP(exemplo4.php)

<?php 
     session_start(); 
    ?> 
    <!DOCTYPE html> 
    <html> 
     <head> 
      <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> 
      <title>Graph Chartjs Export</title> 
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> </script> 
      <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js"></script> 
      <style> 
       .myForm { text-align:center; } 
      </style> 
     </head> 
     <body> 
      <?php 
       $example = "let's go"; 
       $_SESSION['example'] = $example; 
      ?> 
      <form id="myForm" method=POST action="graphresult4.php" > 
       Value1: 
       <input type="text" name="value1" value="123" /> <br><br> 
       Graphic: <br> 
       <input type="hidden" name="imageData" id="imageData" /> <br> 
       <canvas id="drawing" width="350" height="200"></canvas> <br> 
       <input type="submit" value="submit"> 
      </form> 
      <script type="application/javascript" src="graphic4.js"></script>  
     </body> 
    </html> 

はJavascriptを

var ctx = document.getElementById("drawing").getContext("2d"); 
    var data = { 
     labels: ['Jan', 'Feb', 'Mar'], 
     datasets: [{ 
       label: "# of votes", 
       fillColor: "#07C", 
       data: [50, 80, 200] 
     }] 
    }; 

    var myBarChart = new Chart(ctx).Bar(data, { 
     scaleOverride: true, 
     scaleSteps: 10, // number of ticks 
     scaleStepWidth: 10, // tick interval 
     scaleBeginAtZero: true 
    }); 


    $('#myForm').submit(function(e) { 
      e.preventDefault(); // don't submit multiple times 
      this.submit(); // use the native submit method of the form element 
      $('#myForm').val('imageData') = "2"; 
     //var imgData = ctx.toDataURL("image/png"); 
     document.getElementById('imageData').value="test"; 
     alert('Here'); 
    }); 

PHP(graphresult4.php)

<?php 
     session_start(); 
    ?> 
    <!DOCTYPE html> 
    <html> 
     <head> 
      <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> 
      <title>Graph Chartjs Export</title> 
     </head> 
     <body> 
      <?php 
       $example = $_SESSION['example']; 
       echo '<b>PHP Variable: </b> [example] => '.$example.'<br><br>'; 
       echo '<b>POST Variables</b><br>'; 
       print_r($_POST); 
      ?> 
      <br> 
      <br> 
      <b>Script</b> 
      <p> imageData = 
      <script> 
       document.writeln(imageData); 
      </script> 
      </p> 
     </body> 
    </html> 

私がここにパット:

http://profwtelles.ddns.net/teste/phpjava/exemplo4.php

私の問題は、変数imageDataは毎回空白で、javascript内の関数は実行中ではありません。変更$( '#のあるmyForm')のval( '画像データ')= "2"

:。

私はラインを除去

graphresult4.phpで定義し、 $画像データ= $ _POST [」 imageData '];

document.writeln( '[php] echo $ imageData; [/ php]');

結果:

PHP Variable: [example] => let's go 

POST Variables 
Array ([value1] => 123 [imageData] =>) 

Script 
imageData = [ php] echo $imageData; [/php] 

画像データは再び空になります。

+0

$( '#のあるmyForm')を助けヴァル( '画像データ')= "2"。この行は何ですか? – seravee

+0

すべてが変更されたかどうかを確認するためのテストを行いました –

答えて

0
 

Remove this -> $('#myForm').val('imageData') = "2"; 

Add document.getElementById('imageData').value="test"; before submit, 
In graphresult4.php define, 
$imageData = $_POST['imageData']; 

document.writeln('[ php] echo $imageData; [/php]'); 

希望これは

+0

まだ... document.getElementById( 'imageData')。value = "test";ファイルJavascript?関数submit(outside)の下に移動しますか? –

+0

私は外に出て(腹を立てて)...働いて...私は確認するためにもっとテストをします。 –

+0

submit関数が動作していません...これは、グラフィックスからデータを取得する必要があるため、これを使用する必要があります。var imgData = ctx.toDataURL( "image/png"); –

関連する問題