2017-04-04 6 views
1

に更新していない私は、故障に問題を自分のコードを簡素化しているといただきましたが、実際に間違って行くためのタイムスタンプを持つ単純な例を持っています。 なぜAJAX呼び出しを行うのか驚かないでください。これはサーブレットの本当の機能です。Javascriptの値は、サーブレット

そのサーブレットとfollwingコードはJSPページの一部である、JAVA 1.7とTomcat 7の作業イムは、私は、FirefoxとChromeでそれを実行します。

私の目標は、Javaメソッドから値を取得し、それをサーブレットページのDIV "ContentCharts"に書き込むことです。 問題は、私はJAVA varibleの値を書き込み、これをテストするにはJavascriptが「ツァイト」のvauleを更新していないということです、常にDIV-コンテナに同じタイムスタンプを書き込み、コンソール上

 $(document).ready(function() 
     {  
      function ausgabe() 
      { 
        <% 
        GregorianCalendar now = new GregorianCalendar(); 
        DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG); 
        String JZeit = df.format(now.getTime()); 
        System.out.println("FKT ausgabe zeit:"+ JZeit); 
        %> 

        var zeit='<%=JZeit %>'; 
        console.info('Zeit:', zeit); 
        document.getElementById('ContentCharts').innerHTML = zeit; 
      } 

      $("#subtab2").click(function() 
      { 

       $.ajax 
       (
        { 
         url:'overview', 
         data:{dbname:this.className}, 
         type:'get', 
         cache:false, 
         success:function(){ausgabe();}, 
         error:function(){alert('error');}  
        } 
       ); 
      } 
     } 

「Jzeit」をServerlogsに追加し、ボタンを3回クリックするとこれが(Click to see the Picture)になります。あなたがここの写真でわかるように、私は正しいタイムスタンプを手に入れます。

私はまた、Firebug ConsoleにJS varialbe "zeit"の値を投稿しました。そして、今私は間違ったタイムスタンプを取得します(Click to see the Picture)

DIVのコンテンツはリフレッシュしていますが、ここではコンソールのような同じ問題、常に同じタイムスタンプです。

これらの私の考えと質問は以下のとおりです。

なぜ持っているJS変数間違った値JAVAでの右? JSに変数を更新する必要があると言うオプションはありますか? JSはJAVAコードの回答を保存し、それをもう実行しないかもしれませんが、値の割り当てのようにJSとJAVAの間に直接接続がないので、上部JAVAコードスニペットを実行するのでしょうか? 問題を解決するにはどうすればよいですか?

あなたは私がそれを求める助けてくださいすることがより多くの情報が必要な場合。

答えて

0

あなたは、Ajaxのパターンについて少し混乱しています。あなたは<%= jsp tags %>に書くものは、サーバー上でレンダリングされることを

注意、それは決して変わらないクライアントに送信されます。したがって、ausgabe関数は呼び出されたときに常に同じ結果を返します。その後の関数の呼び出しでは、繰り返しているサーバー要求は発生しません。これは監視している動作です。この問題を解決するには

、あなたのAJAX呼び出しでsuccess機能は、サーバーからの応答でインスタンス化される引数を取る必要があります。 ausgabe関数内のjspタグに書き込んだJavaコードをサーバーに移動し、必要な変数をoverviewエンドポイントから戻す必要があります。次に、ausgabe関数をリファクタリングして、サーバー計算値を含む引数を取り、必要に応じてページを更新する必要があります。ここで

は、Ajaxリクエストにいくつかの読書です:

https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started

http://api.jquery.com/jquery.ajax/

関連する問題