2017-06-30 9 views
-1

私はサーブレットからデータを取ってチャートを描くためのJSPコードを書いています。 "submit"ボタンをフォームの外側に残し、正しいグラフが描画されていません。 しかし、グラフの代わりにフォーム内のボタンを呼び出すと、正しいデータを持つデータテーブルが取得されています。つまり、サーブレットのデータがフォームの外側にないフォームに渡されたと思います。ここ サーブレットからJSPコードにデータを渡すにはどうすればいいですか?

は私のJSPコード

<form action="NewServlet1" method="Post" > 
<center> 
     <input type="text" name="website" list="website" placeholder="Enter your website"> 
     <datalist id="website"> 
     <option value="https://www.google.lk/">GOOGLE</option> 
     <option value="https://www.yahoo.com/">YAHOO</option> 
     <option value="https://www.hackerrank.com/">HACKER RANK</option> 

     </datalist><br> 
     <button id="button2" name="button2" onclick="submit()" class="btn btn-primary">submit</button> 
     <br><br><br> 


    </center></form> 

    <div style="width: 400px; height: 400px"> 
     <canvas id="myChart" width="10000" height="10000" ></canvas> 
    </div> 
<center> <div> 
     <button id="button1" name="button1" onclick="submit()" class="btn btn-primary">submit</button> 
    </div></center> 
    <script> 
     function Test(today, time) { 
      var ctx = new Chart(document.getElementById("myChart") 

      , { 

       type: 'line', 
       data: { 
        labels: today, 
        datasets: [{ 
          data: time, 
          label: "Web Service 1", 
          borderColor: "red", 
          fill: false 
         } 
        ] 
       }, 
       options: 
         { 
          scales: {xAxes: [{display: true, scaleLabel: {display: true, labelString: 'date and time'}}], yAxes: [{display: true, ticks: {beginAtZero: true, steps: 100, stepValue: 50, max: 6000}}]}, 

          hover: {intersect: false }, 
          title: {display: true, text: 'response time of selected website'}, 
           tooltips: { mode: 'nearest'} 

         } 
      }); 
} 
function submit() 
{ 

    $.post("NewServlet1", 
      { 

      }, 
      function (data) 
      { 

       Test(data.today, data.time); 
      }); 
} 

これは私のサーブレットのコードである

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
     response.setContentType("text/html"); //1st line 
     String website = request.getParameter("website"); //2nd line 
     NewClass1 myclass1 = new NewClass1(); 
     NewClass2 myclass2 = new NewClass2(); 
     //String website1 = "https://www.google.lk/"; /*when I use this line instead of 1st 
                 //and 2nd lines 
                 //I'm getting perfect graph but I want 
                 // to take user input not fixed input*/ 

    try { 
     myclass2 = myclass1.myclass(website); 


    } catch (Exception ex) { 
     Logger.getLogger(NewServlet1.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    int time[] = NewClass1.time1; 
    String today[]=NewClass1.today; 
    NewClass3 myclass3 = new NewClass3(); 
    myclass3.time=time; 
    myclass3.today=today; 
    Gson gson = new Gson(); 
    String jsonString = gson.toJson(myclass3); 
    response.setContentType("application/json"); 
    response.getWriter().write(jsonString); 


} 

誰かが私の間違いを犯すことができ

答えて

0
  1. フォームのアクションパラメータを使用する代わりに、送信機能を明示的に指定する必要はありません。したがって、フォームの中からsubmit関数を呼び出すと、入力フィールドを持つAction NewServlet1というフォームが呼び出されます。
  2. フォームの外側から呼び出しを行うと、明示的に定義したSubmit関数が呼び出されます。ですから、フォームアクションと入力タイプを使用するには、送信メソッドとそのベストを定義するのがよい習慣ではありません。したがって、必要なアクションを含むフォームを指定するか、メソッドの名前を変更してください。
+0

私の間違いを犯してもいいですか? – sabari

+0

私はあなたが間違いを犯すことができないので、私はそれをしたくない – tumblerwolverine

+0

それは大丈夫です:)上記のお返事ありがとうございます。 – sabari

関連する問題