- PR -

iframeにPostでデータを渡したい

1
投稿者投稿内容
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2004-03-09 14:09
msoです。
ASP.NETというよりはJavaScriptの質問になってしまいますが、
ご存知の方や助言をいただけるかたいたらよろしくお願いします。

現在、
<html>
<head>
<title>test</title>
<script>
function yobidashi(){
var hoge = 'foo';
document.all.Sample1.src = 'test2.aspx?' + hoge;
}
</script>
</head>
<body onload="yobidashi()">
<form id="Sapmel_Form01" method="post" runat="server">
<iframe id="Sample1" name="Sample1" frameborder="0" height="100%" width="100%" scrolling="no"></iframe>
</form>
<form id="Sapmel_Form02" method="post" >
<input type="hidden" id="Form02_text" name="Form02_text" runat="server">
</form>
</body>
</html>

というようなtest.aspxを呼び出しての中にあるtest2.aspxを
表示させています。
今まではtest2.aspxに対してQueryStringでデータを渡していたのですが、
大量のデータをtest2.aspxに渡さないといけなくなりました。
そこで、Postを使いtest2.aspxにデータを渡そうとしてるのですが、
うまくいきません。
Sapmel_Form02というFORMを作成し、そこにHIDDENを作成し、
どこかのタイミングでSubmitさせればいいと思っているのですが、
具体的になかなかうまくいきません。

まとめると件名の通りなのですが、iframeにPostでデータを渡したいのですが、
渡すことができません。
どのような方法をとればよいのでしょうか?

#Cookieやセッション変数はシステムの都合上使うことを禁止されているので、
#使うことができません。



[ メッセージ編集済み 編集者: mso 編集日時 2004-03-09 14:24 ]
焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2004-03-09 14:22
Sapmel_Form01のtargetをSample1にしてあげればいいのでは?
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2004-03-09 14:32
引用:

焼きそばさんの書き込み (2004-03-09 14:22) より:
Sapmel_Form01のtargetをSample1にしてあげればいいのでは?



返信ありがとうございます。
targetを指定したのですが、だめでした。
ちょっと良くわからないので逆に質問をしたいのですが、
Form02_textの値をPostしたいのですがなぜSample1にtargetの
指定をするのでしょうか?
何かJavaScriptでやるのであればSample2に対して何かをしないと
いけないと思うのですが?
焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2004-03-09 14:45
引用:

msoさんの書き込み (2004-03-09 14:32) より:

targetを指定したのですが、だめでした。
ちょっと良くわからないので逆に質問をしたいのですが、
Form02_textの値をPostしたいのですがなぜSample1にtargetの
指定をするのでしょうか?



焼きそばです。
だめでしたか。
targetをSample1にするとtest2.aspxにPOSTします。
で、Sample2というのはFormのことですか?
ソース中に見つかりませんが。
だとすると、Sample2のFormのtargetをIFRAMEにしてあげればどうなりますか?

#IFRAMEをFormで囲む必要はないのかも。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2004-03-09 15:09
msoです。
返事ありがとうございます。

引用:

焼きそばさんの書き込み (2004-03-09 14:45) より:
targetをSample1にするとtest2.aspxにPOSTします。


んー、POSTされていません。

引用:

で、Sample2というのはFormのことですか?
ソース中に見つかりませんが。
だとすると、Sample2のFormのtargetをIFRAMEにしてあげればどうなりますか?


おっしゃるとおりSapmel_Form02のFORMのことです。
ただ、Sapmel_Form02のFORMはrunat=serverがされていないので、
TARGETされないと思います。


べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-03-09 17:43
とりあえず表題にお答えするなれば、ボタン押下時か何かにjavascriptで
Form1.target=・・//ターゲットをiframeに指定
Form1.action=・・//よみこむページ(POST先)を指定
Form1.method="POST";//(最初からPOSTになっているかも)
Form1.submit();//サブミット
return false;//これも必要かも
でいけるのではないでしょうか。

ただ、POST先が普通のASPとかなら問題ないのですが、ASP.NETの場合は
VIEWSTATEの関係上うまくいきません。そこで、POST先aspxのPageディレクティブで
enableViewStateMacにfalseを指定する必要があるみたいです。

#enableViewStateMacって、VS.netではデフォルト表示がfalseなのに
#ディレクティブに何も書かなかった場合の既定値はtrue??
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2004-03-10 07:43
msoです。

すいません、会社からアクセスできなかったもので自宅から投稿しています。
理解不足でもうしわけなかったのですが、焼きそばさんのアドバイスをよ〜く
考え直したらできました。

<form id="Sapmel_Form02" method="post" target="Sample1" action="test2.aspx">
こんな感じです。
runat="server"をつけるとうまく動作しなかった気がします。
1

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