- ベストアンサー
html同士の変数引渡し
「a.htm」→「b.htm」→「test.cgi」(perl)の画面遷移しています。 「a.htm」→「b.htm」の間で「a.htm」に <input type=submit value="送信する">が記入されてます。 送信ボタンを押された時に商品番号を「b.htm」へ表示したいのですが どう変数を引き渡せばよいか解らず投稿しました。 宜しくお願い致します。
- みんなの回答 (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>
その他の回答 (5)
- yambejp
- ベストアンサー率51% (3827/7415)
というか、b.htmを使う理由をはっきりさせた方が よろしいかと。 スタティックなhtml同士のデータの受渡しは 意義を見出すことができません。 b.htmにデータが写ったところで結局、サーバーに データを送って、サーバーサイドでデータチェック するわけではないのですよね? であれば、a.htm内でsubmit時にonSubmitで チェックするのが妥当かと思いますがいかがでしょう?
- akanekor
- ベストアンサー率52% (102/194)
そのような場合は隠しフレームを使う方法があります。 仕組みを簡単に書くと、 全体をフレーム表示にして、隠しフレーム側はサイズを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>
お礼
返答有難うございます。 上記のような方法もあるのですね。参考になります。
- yambejp
- ベストアンサー率51% (3827/7415)
a.htm(入力)→b.htm(確認)→test.cgi(実行)を a.htm(入力)→test.cgi(確認)→test.cgi(実行) とするとよいのでは? 確認で問題なければフラグをたてて、自分に 再度データを投げればよいわけです。
- naochancom
- ベストアンサー率61% (41/67)
#1 さんと同意見ですが、、 javascriptを使用すれば、いけると思います。 (ただしている人は少ないと思います。) a.htmlの送信でmethod="get"で送信して、URLに データを乗っけます。 b.htmlでは、そのURLを取得して?以降を取得=でsplit して、データを取得表示を行います。 下のURLを参考に見てください。 これでいけそうですが、、
補足
参考URLを試したのですがb.htmlのテキストボックスへ値を入れたいのです。 できませんでした
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 通常の、静的なHTMLからHTMLに遷移する場合には変数の引渡しは出来ません。 a.htmlとb.htmlの間に、a_to_b.cgiのようなCGIを挟んで、そのCGIに処理をさせてください。
お礼
早速上記方法を試した所うまくいきました。有難うございます。 上記のような事が解らず困っていました。感謝致します