• 締切済み

データ受け渡し時のSessionの使い方

いつもお世話になっております。 現在A.aspからB.aspにデータを渡したいと考えています。 Sessionを用いてA.asp上のリンクからClickする箇所によって引数をかえて、Bに渡したいのですが、Aの最下層に書かれたSessionのみが渡る状態です。 (下記の例で言うと、どれをクリックしても333が表示されます。) 簡単で申し訳ありませんが、下記にソースを書きます。 何かお気づきの点があれば、ご教授ください。 宜しくお願い致します。 ※A.aspの内容 <% session("key") = "111" Response.Write "<a href=""B.asp""> データ1</a>" %> <% session("key") = "222" Response.Write "<a href=""B.asp""> データ2</a>" %> <% session("key") = "333" Response.Write "<a href=""B.asp""> データ3</a>" %> ※B.aspの内容 <html> <head> </head> <%Response.Write session("key")%> </HTML>

みんなの回答

回答No.2

あえて Session で無ければいけない理由がないのであれば ※A.aspの内容 <%Response.Write "<a href=""B.asp?key=111"">データ1</a>"%> <%Response.Write "<a href=""B.asp?key=222"">データ2</a>"%> <%Response.Write "<a href=""B.asp?key=333"">データ3</a>"%> ※B.aspの内容 <%Response.Write Request.QueryString("key")%> で良いのでは? osamuyさんの仰るとおり、ASPはサーバ側で処理されるので、 <% session("key") = "111" Response.Write "<a href=""B.asp""> データ1</a>" %> <% session("key") = "222" Response.Write "<a href=""B.asp""> データ2</a>" %> <% session("key") = "333" Response.Write "<a href=""B.asp""> データ3</a>" %> と書いても、先に<% %>内のASPがサーバ側で処理されるので サーバ側の処理--------------------------------------------------- session("key") = "111" ←"111"が格納される session("key") = "222" ←"111"は上書きされて"222"が格納される session("key") = "333" ←"222"は上書きされて"333"が格納される -----------------------------------------------------------------  ↓ 処理結果--------------------------------------------------------- session("key")には"333"が格納されている <a href="B.asp"> データ1</a> <a href="B.asp"> データ2</a> <a href="B.asp"> データ3</a> -----------------------------------------------------------------  ↓ クライアント(ブラウザ)側--------------------------------------- 処理結果を受信 ----------------------------------------------------------------- となります。 蛇足ですが、 <%Response.Write "<a href=""B.asp?key=111"">データ3</a>"%> はサーバ側でHTMLを書く意外に何も処理してないので、 <a href="B.asp?key=111">データ3</a> とそのままHTMLで書いても同じです。 渡す値がASPの変数(例えば、変数 i )であれば、 <% Response.Write "<a href=""B.asp?key=" & i & """>データ3</a>" %> と書いてもいいですが、 <a href="B.asp?key=<% Response.Write i %>">データ3</a> と書くこともできますし、もっと簡単に <a href="B.asp?key=<%=i%>データ3</a> と書くこともできます。 <% Response.Write "~" %> は <%="~"%> に省略できるので HTMLに挟み込む場合はむしろ省略形の方が一般的です。 #余分な情報でしたか?(^^;)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

ASPはサーバ上で実行されますので、A.aspの評価が完了した時点で、Session("key")の値は、333になります。データ1及びデータ2で行ってる代入は無駄ですね。 また、B.aspで評価できるRequestには、どのリンクを押したのか判断つく情報が記述されてません。 A.aspで<a href="B.asp?req=1">data 1</a>のように記述するのがてっとりばやいかと。 ここらへんオブジェクトRequestやServeVariablesの内容を一覧して、どういうリクエストが送られてきるのか調べてみると、理解が速まると思います。

専門家に質問してみよう