- PR -

sessionに登録した文字列をJavascriptで取得したい

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-07-22 14:24
度々、失礼します。

WinXP & Tomcat5.5 & struts1.2 & IE6の環境で開発してます。

AjaxからAction内でセットしたString文字列をJavascript内で
取得したいのですが、どのように取得すればよいのでしょうか?

よろしくお願いします。
(Actionの処理は正常にセットしてます。)


1.Action
HttpSession session = request.getSession();
session.setAttribute("KEY", "AAA:BBB");

2.Javascipt
// 通信結果取得成功
if (xmlHttp.readyState == 4) {
 ret = session.getAttribute('KEY'); //←ここで取りたい


[ メッセージ編集済み 編集者: 未記入 編集日時 2008-07-22 14:41 ]

[ メッセージ編集済み 編集者: 未記入 編集日時 2008-07-22 14:46 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-07-22 15:21
Ajaxのリクエストに対するレスポンスに、
セッションの内容を含めるだけです。
都合上できないのであれば、
再度セッションの値を返す専用のAjax用アクションを用意すればよいでしょう。
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-07-22 15:51
かつのりさん、いつもありがとうございます。

Ajax用のActionを起こして前述のようにセットしているのですが・・。

// 通信結果取得成功
if (xmlHttp.readyState == 4) {
<% String dt = (String)session.getAttribute("KEY"); %>
var ret = "<%= dt %>";
alert(ret);

Ajaxのレスポンスが帰ってきたら、ここで取得できると思っているんですが、
nullしか表示されませんでした。
どこか間違いはありますでしょうか?

よろしくお願いします。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-07-22 16:12
Ajax以前に、JSPとHTMLの関係(処理順序や処理環境)を勉強する必要がありますね。
表示されたHTMLを右クリックしてソースを見れば分かるはずですが…。

[ メッセージ編集済み 編集者: mio 編集日時 2008-07-22 16:12 ]
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-07-22 16:46
ありがとうございます。

右クリックでソースを見てもnullと出てます。
そうですね。はじめにソース表示でJava部が表示されますね。
ん〜

xmlHttp.responseText

での取得の事をおっしゃってるんでしょうか?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-07-22 17:54
引用:

if (xmlHttp.readyState == 4) {
<% String dt = (String)session.getAttribute("KEY"); %>
var ret = "<%= dt %>";
alert(ret);


Ajaxの通信以前にセッションの値は既にブラウザに送り出されています。
サーバとクライアントの関係をもうちょっと理解してからの話ですね。

引用:

xmlHttp.responseText

での取得の事をおっしゃってるんでしょうか?


そうです。
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-07-22 18:24
かつのりさん、ありがとうございます。

しかし、このxmlHttp.responseTextですが、alertで出しても全くの空でして・・。
Action部をこのようにしても同じでした。

1.Action
HttpServletRequest request

request.setAttribute("KEY", "AAA:BBB");

mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-07-22 18:30
いや…純粋にJavaScriptのソースとして考えてください。

var ret = "null";

と書いてあるんだから、null以外表示されるわけがないでしょう。

ブラウザが実行するのは、あくまで右クリックして表示されるソースですよ。

ご希望の処理をしたいなら、Ajaxのリクエストに対するレスポンスとして、送り返さないと。
元々のjspには書けません。

スキルアップ/キャリアアップ(JOB@IT)