dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。

現在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>

A 回答 (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に挟み込む場合はむしろ省略形の方が一般的です。

#余分な情報でしたか?(^^;)
    • good
    • 0

ASPはサーバ上で実行されますので、A.aspの評価が完了した時点で、Session("key")の値は、333になります。

データ1及びデータ2で行ってる代入は無駄ですね。
また、B.aspで評価できるRequestには、どのリンクを押したのか判断つく情報が記述されてません。
A.aspで<a href="B.asp?req=1">data 1</a>のように記述するのがてっとりばやいかと。

ここらへんオブジェクトRequestやServeVariablesの内容を一覧して、どういうリクエストが送られてきるのか調べてみると、理解が速まると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!