私は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() を直接呼び出すと、何も起こりません。
値を即座に (または少なくとも顕著な遅延なしで) ロードするには、何を変更する必要がありますか?