チョコミントアイス

「a.htm」→「b.htm」→「test.cgi」(perl)の画面遷移しています。
「a.htm」→「b.htm」の間で「a.htm」に
<input type=submit value="送信する">が記入されてます。
送信ボタンを押された時に商品番号を「b.htm」へ表示したいのですが
どう変数を引き渡せばよいか解らず投稿しました。
宜しくお願い致します。

A 回答 (6件)

#2と同じ方法


a.html
----------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS">
<title>A</title>
</head>
<body>
<form action="b.html" method="GET">
商品番号<input type="text" name="NO" value="">
別の情報<input type="text" name="OTHER" value="OTHER"><br>
<input type="submit" value="送信する">
</form>
</body>
</html>
----------------------------------------------------------------

b.html
----------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS">
<title>B</title>
<script type="text/javascript">
<!--
window.onload=function(){
var query = location.search.substring(1);
var datas = query.split(/&/);
var words = new Array();
for(var i=0;i<datas.length;i++){
var data=datas[i].split(/=/);
words[data[0]]=data[1];
}
document.FORMB.NO.value=words["NO"];
};
//-->
</script>
</head>
<body>
<form name="FORMB">
商品番号<input type="text" name="NO">
</form>
</body>
</html>
    • good
    • 0
この回答へのお礼

早速上記方法を試した所うまくいきました。有難うございます。
上記のような事が解らず困っていました。感謝致します

お礼日時:2006/04/18 14:24

というか、b.htmを使う理由をはっきりさせた方が


よろしいかと。
スタティックなhtml同士のデータの受渡しは
意義を見出すことができません。
b.htmにデータが写ったところで結局、サーバーに
データを送って、サーバーサイドでデータチェック
するわけではないのですよね?

であれば、a.htm内でsubmit時にonSubmitで
チェックするのが妥当かと思いますがいかがでしょう?
    • good
    • 0

そのような場合は隠しフレームを使う方法があります。


仕組みを簡単に書くと、

全体をフレーム表示にして、隠しフレーム側はサイズを0にします。
画面の表示としては、「メイン画面(a.html,b.html)+隠しフレーム」となります。

処理は、
a.htmlのsubmitのタイミングで隠しフレームに値の設定を行い、
submit処理が終わりb.htmlが表示の際、
onloadのタイミングで
隠しフレームから値の取得を行います。

(サンプル)

### Index.html
<html>
<head>
</head>
<frameset cols="*,0">
<frame src='main.html' name='main'>
<frame src='hideen.html' name='kakusi'>
</frameset>
<body>
</body>
</html>


### main.html 上で言う a.html
<html>
<head>
</head>
<script type="text/javascript">
<!--
function SendNextHtml()
{
var strMsg;

// 値を取得
strMsg = form_val.word.value;

//隠しフレームに値を入れる
parent.frames["kakusi"].KAKUSI_DATA.data1.value =strMsg;
return 0;
}

// これは、テスト用 上のだと、テストsubmitしないと確認出来ないので
// window.openで代用
function SendNextHtml_TEST()
{
var strMsg;
// 値を取得
strMsg = form_val.word.value;
//隠しフレームに値を入れる
parent.frames["kakusi"].KAKUSI_DATA.data1.value =strMsg;
window.open('b.html','main');
return 0;
}
-->
</script>
</head>
<body>
<input type='button' value='これは、テスト用' onclick='return SendNextHtml_TEST()'>
<form action='xxx.cgi' name = 'form_val' onsubmit='return SendNextHtml()'>
<input type="text" name='word'>
<input type="submit" value="送信する">
</form>
</body>
</html>



### hideen.html ここに値を隠します
<html>
<body>
<form name='KAKUSI_DATA'>
<input type='hidden' name='data1' value=''>
<input type='hidden' name='data2' value=''>
<input type='hidden' name='data3' value=''>
</form>
</body>
</html>


### b.html
<html>
<head>
</head>
<script type="text/javascript">
<!--

// <body onload>しているので、起動時に呼び出されます
function Oninit() {
var iNum;
// 隠しフレームから値の取得
iNum = parent.frames["kakusi"].KAKUSI_DATA.data1.value;

// テキストボックスに表示
textbox.value = iNum;
}

-->
</script>
</head>
<body onload='Oninit()'>
<input type='text' id ='textbox' value=''>
</body>
</html>
    • good
    • 0
この回答へのお礼

返答有難うございます。
上記のような方法もあるのですね。参考になります。

お礼日時:2006/04/18 14:25

a.htm(入力)→b.htm(確認)→test.cgi(実行)を


a.htm(入力)→test.cgi(確認)→test.cgi(実行)
とするとよいのでは?
確認で問題なければフラグをたてて、自分に
再度データを投げればよいわけです。
    • good
    • 0

#1 さんと同意見ですが、、



javascriptを使用すれば、いけると思います。
(ただしている人は少ないと思います。)

a.htmlの送信でmethod="get"で送信して、URLに
データを乗っけます。

b.htmlでは、そのURLを取得して?以降を取得=でsplit
して、データを取得表示を行います。
下のURLを参考に見てください。

これでいけそうですが、、

参考URL:http://homepage2.nifty.com/BASH/WWW/JavaScript/q …

この回答への補足

参考URLを試したのですがb.htmlのテキストボックスへ値を入れたいのです。
できませんでした

補足日時:2006/04/13 18:57
    • good
    • 0

がると申します。


通常の、静的なHTMLからHTMLに遷移する場合には変数の引渡しは出来ません。
a.htmlとb.htmlの間に、a_to_b.cgiのようなCGIを挟んで、そのCGIに処理をさせてください。
    • good
    • 0

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