- PR -

JSPとJavaScriptに関する質問

投稿者投稿内容
あさ
会議室デビュー日: 2006/03/14
投稿数: 8
投稿日時: 2006-05-25 14:39
お世話になります。

以下の2つ画面があります。
「main.jsp」(メイン画面)
「pop.jsp」(メイン画面よりポップアップする画面)

メインよりボタンをクリックする際に、パラメータで区分を渡します。
ポップアップにてパラメータを取得し、
そのパラメータをポップアップ画面のJavaScript内で取得し、
メイン画面へまた渡そうとしています。
ポップアップ画面にて、パラメータ取得(<%= request.getParameter("kbn") %>)は出来るのですが、
取得したパラメータをJavaScriptにて取得する方法がわかりません。

JSTLを使用して試しているのがうまくいきません。
どなたかご存知の方ご教授よろしくお願いいたします。
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2006-05-25 15:19
location.hrefで、URLまるごと取得できますよ
安直な方法ですが・・・。

はちぃ
常連さん
会議室デビュー日: 2004/12/20
投稿数: 29
投稿日時: 2006-05-25 15:36
引用:

ポップアップ画面にて、パラメータ取得(<%= request.getParameter("kbn") %>)は出来るのですが、
取得したパラメータをJavaScriptにて取得する方法がわかりません。


ポップアップでJavaScriptの変数へ区分を代入できていないと言うことですか。

mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-05-25 15:48
getであれば、location.searchから取るのが楽ですね。
postならサーバ側の処理を介在させないといけませんが。

var kbn = "<%= request.getParameter("kbn") %>";

とか、クライアントに渡ってJavaScriptが実行されるときに、評価できる式が書かれているようにしないと。
はちぃ
常連さん
会議室デビュー日: 2004/12/20
投稿数: 29
投稿日時: 2006-05-25 15:54
引用:

mioさんの書き込み (2006-05-25 15:48) より:
postならサーバ側の処理を介在させないといけませんが。


POSTでもmioさんの仰る
var kbn = "<%= request.getParameter("kbn") %>";
で取得できると思いますが。
あさ
会議室デビュー日: 2006/03/14
投稿数: 8
投稿日時: 2006-05-25 16:40
返信有難う御座います。

var kbn = "<%= request.getParameter("kbn") %>";
で取得することが出来ました。

ポップアップ画面でリロードしている為、そのままでは値が消えてしまいました。
hiddenに値をセットすることで回避することが出来たのですが、name属性とパラメータの
名前が同じでないとhiddenに値がセット出来ませんでした。

話がそれてしまい申し訳御座いませんが、
何故同じ名前でないと値が取れないのかがわかりませんでした。

ご存知の方がおられましたらご教授下さい。

はちぃ
常連さん
会議室デビュー日: 2004/12/20
投稿数: 29
投稿日時: 2006-05-25 17:10
引用:

あささんの書き込み (2006-05-25 16:40) より:
返信有難う御座います。

var kbn = "<%= request.getParameter("kbn") %>";
で取得することが出来ました。

ポップアップ画面でリロードしている為、そのままでは値が消えてしまいました。
hiddenに値をセットすることで回避することが出来たのですが、name属性とパラメータの
名前が同じでないとhiddenに値がセット出来ませんでした。

話がそれてしまい申し訳御座いませんが、
何故同じ名前でないと値が取れないのかがわかりませんでした。

ご存知の方がおられましたらご教授下さい。




どういった処理を書かれているかがわかりませんが、
目的としている処理に近いかなと思うサンプルを作成してみました。

親画面のJSP>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

<%@ page language="java" contentType="text/html; charset=Shift_JIS"
pageEncoding="Shift_JIS"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>Insert title here</title>
</head>
<body>
<form action="test2.jsp" method="POST" target="_blank" >
<input type="submit" value="open pop" />
<!-- 子画面に渡す値 -->
<input type="hidden" name="kbn" value="1" />
</form>
<!-- 子画面から渡された値を表示する領域 -->
<div id="result"></div>
</body>
</html>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<親画面のJSP

子画面のJSP>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

<%@ page language="java" contentType="text/html; charset=Shift_JIS"
pageEncoding="Shift_JIS"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>Insert title here</title>
<script type="text/javascript"><!--
function dispKbn() {
// JavaScriptの変数'kbn'にリクエストスコープから値を取得、代入
var kbn = "<%= request.getParameter("kbn") %>";
// 親画面から渡された値を表示する領域に'kbn'の値を表示
document.getElementById("kbn").innerText = kbn;
}
function returnKbn() {
// 親画面にて定義した<div id="result">を取得
var toEl = window.opener.document.getElementById("result");
// 親画面に渡す値をHIDDENより取得。
var fromEl = document.getElementById("returnvalue");

//値の受け渡し
toEl.innerText = fromEl.value;
}
// --></script>
</head>
<body onload="dispKbn();">
<!-- 親画面から渡された値を表示する領域 -->
<div id="kbn"></div>

<input type="button" value="ここをクリックで親の画面に値を渡す" onclick="returnKbn();" />
<!-- 親画面に渡す値 -->
<input type="hidden" id="returnvalue" value="親の画面に渡す値" />
</body>
</html>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<親画面のJSP

的をはずしていたら申し訳ないです。。
ほまらら
ベテラン
会議室デビュー日: 2005/10/19
投稿数: 54
投稿日時: 2006-05-25 17:58
質問の意味がよく判らなかったので見当違いな返答になるかもしれませんが・・・。

クライアントのブラウザからサーバー側のJSPに送る事ができるデータは
<form action="XXX.jsp">〜</form>
この『〜』の中にある特定種類のタグ(フォーム部品)の値(value)だけです。
例えば<input type="text" id="id1" name="name1" value="1234">
これによって作られるテキストボックスの中身などが、このタグのvalueになります。
このvalueをjsp側で取得できるわけですが、valueはname属性と関連付けられて送信されてきます。
ブラウザのURL欄に
http://...?a=1&b=2
このような形で『?a=1&b=2』のようなものが追加されていつ事がありますが、
ここから、送信側のフォーム部品のname="a"と書かれたタグのvalueが1、name="b"と書かれたタグのvalueが2であったことが読み取れます。
これがサーバに渡される名前と値のセットです。
ですのでhtmlに<input type="text" id="id2" name="name1" value="1234">と書かれていた場合、
データは『?name1=1234』という形で送信され、
jspで値1234を受け取るためには
request.getParameter("name1")を指定する必要があるのです。

hiddenというのタグも、フォーム部品である<input>タグの形態の1つです。
<input type="hidden" id="id2" name="name2" value="value2">
このような形でhtml中に埋め込まれていると思いますが、これのvalueも同様にnameと関連付けられて
?name2=value2
の形でサーバに送信されますので、jsp側はrequest.getParameter("name2")で受け取る必要があるのです。
idはjavascript以外は使いません

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