- - PR -
JSPとJavaScriptに関する質問
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-05-25 14:39
お世話になります。
以下の2つ画面があります。 「main.jsp」(メイン画面) 「pop.jsp」(メイン画面よりポップアップする画面) メインよりボタンをクリックする際に、パラメータで区分を渡します。 ポップアップにてパラメータを取得し、 そのパラメータをポップアップ画面のJavaScript内で取得し、 メイン画面へまた渡そうとしています。 ポップアップ画面にて、パラメータ取得(<%= request.getParameter("kbn") %>)は出来るのですが、 取得したパラメータをJavaScriptにて取得する方法がわかりません。 JSTLを使用して試しているのがうまくいきません。 どなたかご存知の方ご教授よろしくお願いいたします。 | ||||
|
投稿日時: 2006-05-25 15:19
location.hrefで、URLまるごと取得できますよ
安直な方法ですが・・・。 | ||||
|
投稿日時: 2006-05-25 15:36
ポップアップでJavaScriptの変数へ区分を代入できていないと言うことですか。 | ||||
|
投稿日時: 2006-05-25 15:48
getであれば、location.searchから取るのが楽ですね。
postならサーバ側の処理を介在させないといけませんが。 var kbn = "<%= request.getParameter("kbn") %>"; とか、クライアントに渡ってJavaScriptが実行されるときに、評価できる式が書かれているようにしないと。 | ||||
|
投稿日時: 2006-05-25 15:54
POSTでもmioさんの仰る var kbn = "<%= request.getParameter("kbn") %>"; で取得できると思いますが。 | ||||
|
投稿日時: 2006-05-25 16:40
返信有難う御座います。
var kbn = "<%= request.getParameter("kbn") %>"; で取得することが出来ました。 ポップアップ画面でリロードしている為、そのままでは値が消えてしまいました。 hiddenに値をセットすることで回避することが出来たのですが、name属性とパラメータの 名前が同じでないとhiddenに値がセット出来ませんでした。 話がそれてしまい申し訳御座いませんが、 何故同じ名前でないと値が取れないのかがわかりませんでした。 ご存知の方がおられましたらご教授下さい。 | ||||
|
投稿日時: 2006-05-25 17:10
どういった処理を書かれているかがわかりませんが、 目的としている処理に近いかなと思うサンプルを作成してみました。 親画面の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 的をはずしていたら申し訳ないです。。 | ||||
|
投稿日時: 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以外は使いません |