0

私はJavaScriptと開発のフロントエンド全体に不慣れです。

これが私が使用しているものです:

  • Tomcat7 上で動作する Java サーブレット
  • レイアウト/テーマのtwitter-bootstrap
  • フォームが送信された回数を追跡する Pubnub
  • Javascript/jquery を使用して、この値を Web ページに表示します。

ウェブページの値を更新する PUBNUB.subscribe コールバックを追加しました。しかし、最初に Web ページを読み込んだとき、どの値を表示すればよいかわかりません。

この問題を克服するために私が行ったことは次のとおりです。POST リクエストで正しいパラメーターを渡すと、正常に機能している表示される金額を含む pubnub メッセージを送信するメソッドをサーブレットに追加しました。

次に、次のように jquery を使用して POST リクエストを呼び出してみました。

$.post("../servlets/theservlet",
        {
            update : "true"
        });

それを $(window).load 関数内に配置しようとしましたが、Web ページを読み込んだときに、期待どおりに動作しませんでした。すべてがロードされた後に POST が実行されることを期待していました。これにより、サーブレットから pubnub メッセージが公開され、PUBNUB.subscribe 関数のコールバック メソッドがアクティブになります。ただし、値は変更されず、html にハードコーディングされたプレースホルダーのままでした。

現在、 setTimeout("updateUses()", 1500); を呼び出しています。$(window).load 関数内から。updateUses() は、先ほど示した $.post 呼び出しとまったく同じです。

ページをロードすると、プレースホルダーの値が少しの間 (1.5 ミリ秒より長いように見えます) 存在し、その後正しい値に更新されます。setTimeout を削除して updateUses() を直接呼び出すと、何も起こりません。

値を即座に (または少なくとも顕著な遅延なしで) ロードするには、何を変更する必要がありますか?

4

1 に答える 1

2

ページ ビルダーが JSP で、今読んだ内容が正しければ、次のようなことができるはずです。

RequestDispatcher rd=application.getRequestDispatcher("path/to/pubnub/servlet");
rd.include(request,response);

ajax アプローチに固執することを選択した場合、javascript は次のようになります。

$(function(){
    $.post("path/to/pubnub/servlet", {update:"true"}, function(response){
        //do whatever is necessary with the response here, eg.
        //$("#myElementId").html(response);
    });
});

$(function(){...})ラッパーは、DOM の準備が整った後、できるだけ早い機会に内部のコードが実行されるようにします。したがって、タイムアウトは必要ありません。jQuery は通常、このようなラッパー内に記述されます。

于 2012-03-20T15:08:52.997 に答える