2012-01-04 7 views
0

JSというサードパーティのサインインプラグインが使用されているJSPページがあります。サインインが成功した後、JSPで取得したユーザーIDをJSPで使用して、その値を保存してセッションを維持する必要があります。同じページのJSPの範囲でJSの変数の値を読み取る方法は?

このため、jQueryを操作しようとしましたが、JS値がリテラルまたは事前にわかっている場合にのみ機能します。しかしここでは、この場合、値は実行時にログインごとに取得されます。

<% String s = "<script>document.writeln(var)</script>"; %> また、上記の問題が再び発生します。手前で値が分かっている場合にのみ機能します。

document.getElementById("ppurl").innerHTML = ppurl;は値を出力します。しかし、私はそれを保存したい。

JSの変数の値をJSPに渡す目的を達成するにはどうすればよいですか?あなたの第三者がサインインプラグインと仮定すると、

+0

以下のJSPタグの上にマウスを置きますあなたの質問と黒の情報ボックスが表示されるまでお待ちください。次に、wikiページの* info *リンクをクリックします。 「JavaScript」の章まで少し下にスクロールしてください。注意深くお読みください。 – BalusC

答えて

1

、クライアント側のJavaScriptです:

は、ページがクライアントに達したときにJavaScriptが実行されることを覚えておいてください。 JSPコードは完成してからずっと長くなっており、もはや画像にはありません。

あなたは私がすぐに見ることができる3つのオプションがあります。

  1. Ajaxまたは類似を使用してサーバーにデータを送信します。
  2. (リフレッシュの一環としてサーバーにログインデータを送信)ページを更新します。
  3. DOMでこの値を設定したいページにあるものを更新します。

#1と#2は、かなり自明です。

#3の場合:ページにはさまざまなフォームがあり、クライアントトークンやクライアント側のプラグインから取得したものがフォームの非表示フィールドを使用して送信されていることを確認したいとします名前はtokenFieldです。あなたはこれを行うことができます:

function putTokenOnForms(token) { 
    var forms, index, form; 
    forms = document.getElementsByTagName("form"); 
    for (index = 0; index < forms.length; ++index) { 
     form = forms[index]; 
     if (form.tokenField) { 
      form.tokenField.value = token; 
     } 
    } 
} 

あなたが

+0

これも良い点です。一部のサードパーティログインはjavascriptを使用してリクエストを開始しますが、トークンまたはIDを使用してドメインの領収書ページまたはコールバックページにブラウザを送信します。トークンまたはIDを格納し、コールバックページから適切なページにユーザーをリダイレクトする必要があります。 – PlexQ

0

など、出力するページを(自分のサーバーに戻って、各リンクのhrefプロパティに追加)a要素のリンクと同じくらい行うことができますクライアントへのJavaScriptは、そのJavaScriptからデータを読み取ることができません。

データをサーバーに戻してから(例:クエリ文字列またはPOSTデータから)新しいHTTPリクエスト(XMLHttpRequestまたは設定location.hrefを使用)を開始する必要があります。

+0

私は確かに、これはクエリ文字列で位置の更新を好むだろうと思う。それはサーバーが値を操作し、最小限の騒ぎで適切にページを再構築することができます。 AJAX呼び出しを行うと、次のページリクエストで使用する値を保存することができ、複雑さが1レベル上がります。 AJAXを使用する魅力的な理由がない場合は、しないでください。 – PlexQ

0

JSを使用してCookieに格納します。それをJSPで読んでください。あなたのJSで

、あなたがユーザーIDを取得した後、あなたが行うことができます:あなたのJSPで

document.cookie = 'myuserid='+userID; 

、あなたは次のようにそれを読み戻すことができます。

Cookie[] cookies = request.getCookies(); 
String userID; 
for(int i = 0; i < cookies.length; i++) { 
    Cookie c = cookies[i]; 
    if (c.getName().equals("myuserid")) { 
     userID = c.getValue(); // c.getValue() will return the userID 
     break; 
    } 
} 
関連する問題