• ベストアンサー

POSTで<a hrefを送る方法について

POSTで <a href=sample.cgi?md=aa&tx=zz~>hoge</a> <a href=sample.cgi?md=bb&tx=yy~>hoge2</a> <a href=sample.cgi?md=cc&tx=xx~>hoge3</a> <a href=sample.cgi?md=dd&tx=ww~>hoge4</a> を送る方法でjavascriptとの組み合わせで出来るのかな? と思い検索したら <form action="./sample.cgi" method="POST" name="post"> <input type="hidden" name="md" value="aa"> <input type="hidden" name="tx" value="zz">           : <a href='#' onClick="document.post.submit();return false">hoge</a> <form action="./sample.cgi" method="POST" name="post2"> <input type="hidden" name="md" value="bb"> <input type="hidden" name="tx" value="yy">           : <a href='#' onClick="document.post2.submit();return false">hoge2</a> このような手法が見つかりました これだと行数が多くなり、なんとなくすっきりしません どなたかいい解決方法を教えてください よろしくお願いします

  • HTML
  • 回答数3
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • gimmick
  • ベストアンサー率49% (134/270)
回答No.3

JavaScriptオフの場合を考えないなら、このように書けます。 <!-- フォーム --> <form action="sample.cgi" method="post" name="form1"> <input type="hidden" name="md"> <input type="hidden" name="tx"> </form> <!-- スクリプト --> <script type="text/javascript"><!-- function Post(md, tx) {   form1.md.value = md;   form1.tx.value = tx;   form1.submit(); } //--></script> <!-- リンク --> <a href="javascript:Post('aa', 'zz')">hoge</a> <a href="javascript:Post('bb', 'yy')">hoge2</a>

momonga09
質問者

お礼

回答ありがとうございます これは良いですね、すっきりしてますし 編集も楽そうです JavaScriptオフの場合を考えていないので (自分だけ使う予定なので) まったく問題ありません # JavaScriptを勉強しなければ・・・・・

その他の回答 (2)

回答No.2

単にテキストリンクに見せかけたいだけであれば、  画像のようなテキスト   ※テキストが記述された画像 を使うという手段があります。 これなら、 <FORM method="POST"> <INPUT type="image" src="text.gif" alt="リンク風Submit"> </FORM> という感じでOKです。 JavaScript未対応のブラウザへの配慮もいりません。 #ちょくちょく仕事で使ってます、この技(^^;

momonga09
質問者

お礼

回答ありがとうございます JavaScript未対応を気にせずやれる方法ですね ただ、テキストリンクに見せかけたい ・・・ってわけではないので(^^; 今後の参考にさせていただきます

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

FORMは1つにして、リンクの onClick で各 hidden の value を埋めればよいと思います。 # フォーム部 <form action="sample.cgi" method="post" name="post"> <input type="hidden" name="md"> <input type="hidden" name="tx">   : </form> # リンク部 <a href="sample.cgi?md=aa&tx=zz~" onClick="return myPost(this)">hoge</a> <a href="sample.cgi?md=bb&tx=yy~" onClick="return myPost(this)">hoge2</a> <a href="sample.cgi?md=cc&tx=xx~" onClick="return myPost(this)">hoge3</a> <a href="sample.cgi?md=dd&tx=ww~" onClick="return myPost(this)">hoge4</a> # 送信スクリプト <script type="text/javascript"><!-- function myPost(a) {   var query = a.href.substring(a.href.indexOf("?")+1);   while (query) {     var p1 = query.indexOf("=");     var p2 = query.indexOf("&");     if (p2 == -1) p2 = query.length;     var key = query.substring(0, p1);     var val = query.substring(p1+1, p2);     document.post[key].value = val;     query = query.substring(p2+1);   }   document.post.submit();   return false; } //--></script> ※全角スペースを使っているので、コピーする際は半角スペースかタブに変換してください。 ちなみにこの方法だと、JavaScript がオフの環境では GET で(通常のリンクとして)飛びます。 JavaScript オフの人には実行させたくない場合、リンク内の   return myPost(this) の this の部分を "md=aa&tx=zz~" のようにクエリ文字列にし、myPost 関数の方は   function myPost(query) { として   var query = a.href.substring(a.href.indexOf("?")+1); の部分を削除してください。

momonga09
質問者

お礼

回答ありがとうございます =と&を分割してやるんですね なるほど、参考になりました

関連するQ&A

  • for文でpostの値を受け取る方法

    以下のようなコードで、postで投げられた値を、for文で、添え字を組み立てて受け取って表示したいのですが、添え字の生成が間違っているのか、うまくいきません。 何を修正すればよいか教えてください。 <form action="" method="post"> <input type="hidden" value="A" name="name_0"> <input type="hidden" value="B" name="name_1"> <input type="hidden" value="C" name="name_2"> <input type="hidden" value="D" name="name_3"> <input type="submit"> </form> <?php for($i =0; $i < 4; $i++){ if (!empty($_POST['name_$i'])) { print $_POST['name_$i']; } } ?>

    • ベストアンサー
    • PHP
  • POSTをする際にname指定したい。

    まずは下のソースを見てください。 <!--ここから--> <form action="./test.cgi#sample" method=post> <input type=hidden name=namae value="山田"> <input type="submit" name=mode2 value="送信"> </form> <a name="sample">ここにジャンプ</a> <!--ここまで--> 例えば上記のようなソースをtest.cgiというファイルに書きました。 submit後、sampleにジャンプするようにしました。 通常は上のソースで問題なくsampleに戻ってくるのですが、 しかしながら、DcomoのN904だけがtest.cgiにパラメーターが引き渡されないようなのです。 いわゆるnamaeの値である山田がわたされないということです。 そもそも<form action="./test.cgi#sample" method=post> という方法は間違っているのでしょうか? ご教授よろしくお願いいたします。

    • 締切済み
    • CGI
  • a hrefの値渡し

    今回も質問させていただきますが、よろしくお願いします。 a hrefを使って別のページに飛ぶときに、いっしょに二つの$変数名に入っている値を渡そうとしたいのですが、うまくいきません。 <html> (input.php) <head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <title>入力</title> </head> <?php $rand = $_POST['rand']; $charenge= $_POST['charenge']; ?> <body> <h1>値を入力してください</h1> <form action="judgement.php" method="POST"> <input type="text" name="num"/> <input type="submit" value="比較します"> <input type="hidden" name="rand value="<?php echo $rand?>"/> <input type="hidden" name="charenge" value="<?php echo $charenge?>"/> </form> </body> </html> <html> (judgement.php) <head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <title>比較結果</title> </head> <?php $rand = $_POST['rand']; $charenge = $_POST['charenge']; $num = $_POST['num']; ?> <body> <h1>比較結果</h1> <?php if($num == $rand){ print("あたりです。"); }else{ $charenge++; print("はずれです。 <br/>"); print("<a href=\"input.php\">入力ページ</a>からやり直してください"); } ?> </body> </html> 上のjudgement.phpのif文の中にある, <a href=\"input.php\">入力ページ</a>を どのように変えれば、$randと$charengeの値を input.phpに正しく渡すことができるのでしょうか? アドバイスをお願いします。

    • ベストアンサー
    • PHP
  • FORM1つでリンク

    いつもお世話になっております。 既にある質問も調べてみたのですが <form name="top" method="post" action="xxx.cgi"> <input type = "hidden" name="data" value="open"> <a href="#" onClick="submit();">オープン</a> <input type = "hidden" name="data" value="close"> <a href="#" onClick="submit();">クローズ</a> </form> FORMを1つで、hrefのリンクみたいにして違う値を 送信したいのですが、上記だと 二つ目のリンクが上手く出来ません。 どなたかお知恵をお貸し下さい

  • 複数FORMの一括実行について

    通常であれば同一サイト内に下記のソース(フォーム)が入るのですが、 これを改良しサイト上で希望の送信先をチェックボックスで選択し一回の操作で複数のcgiを実行したく思います。 良いcgiがあれば教えてください。 又は改造ができるcgi、修正方法を分かりましたらお教え願います。 サイトA <form action="https://aaa.cgi" method="post"> <input type="hidden" name="名前" value="name"> <input type="hidden" name="メール" value="mail"> <input name="Submit" type="submit" value="送信"> </form> サイトB <form action="https://bbb.cgi" method="post"> <input type="hidden" name="名前" value="name"> <input type="hidden" name="メール" value="mail"> <input name="Submit" type="submit" value="送信"> </form> サイトC <form action="https://ccc.cgi" method="post"> <input type="hidden" name="名前" value="name"> <input type="hidden" name="メール" value="mail"> <input name="Submit" type="submit" value="送信"> </form>

    • 締切済み
    • CGI
  • POSTで送りたい

    PHP初心者です HTMLタグが混じっ文字をHTMLごとPOSTで次ページに送る方法を教えてください ここでは<p><a href="./">TOPに戻る</a></p>をポストしたいです <form action = "test_view.php" method = "post" > <input type="text" name="<p><a href="./">TOPに戻る</a></p>"> <input type="submit" name="" value="送信"> </form> よろしくお願いします

    • ベストアンサー
    • PHP
  • javscriptでa hrefの方法でhidden情報を仕込む方法

    javascriptでa hrefタグを使いhidden情報を仕込ませる方法を教えてください。 <html><head> <script language="javascript"> <!-- function FncNextPage(page){ document.validform.action=page; document.validform.submit; } --> </script></head> <body> ~中略~ <form name="validform" method="post"> <a href="javascript:FncNextPage('abc10.asp??item_CD=<%= item_CD %>')"><%= item_CD %></a> <input type="hidden" name="use_flag" id="use_flag" value="<%=use_flag%>"> </form> このようにして、abc.aspにuse_flagを引継ぐ方法は出来ないでしょうか? よろしくおねがいします。

  • POSTで固定のクエリーの設定方法

    <form method="POST" action="/hoge.cgi?a=a&b=b"> arg1<input type="text" name="arg1" size="20"> <input type="submit" value="送信"><br> <form/> 上記htmlに追記して、クエリーをarg1="hoge"&arg2="piyo"にしたいです。(※textにhogeと入力した例) この時、arg2="piyo"は固定で、ブラウザーには表示されないようにしたいです。 どうhtmlを記述したよいですか?

    • ベストアンサー
    • HTML
  • リンクでPOST送信

    http://www.kojikoji.net/pso/javascript.asp こちらにその方法がのっていて、 Windows IE 6.0 Windows Opera 7.13 では動作を確認しました。ですが、 Windwos Netscape 7.1 で動作しません。Netscapeにも対応した書き方で、<a href=...>を用いてPOST送信することは可能でしょうか? *****以下引用*********************************** リンクやボタンを使って「xxx.asp」へPOST送信 <html> <head> <script language="JavaScript"> <!-- function wPost(a1,a2){ document.form1.text1.value=a1; document.form1.text2.value=a2; document.form1.action = "xxx.asp"; document.form1.submit(); } //--> </script> </head> <body> <a href="javascript:wPost("text1","text2")">送信</a> <input type="button" OnClick="wPost('text3','text4')" value="送信"> <form name="form1" method="post" action="err.html"> <input type="hidden" name="text1"> <input type="hidden" name="text2"> </form> </body> </html>

  • $_POST['hoge']のデータをフラッシュするには

    <form method="post" action=""> <input type="text" name="hoge1" value="$_POST['hoge1']"> <input type="text" name="hoge2" value="$_POST['hoge2']"> <input type="submit" value="送信"> </form> データ送信してもフォーム内にデータが残るようにしたのですが、HTMLをこのままにして、PHPの方で$_POST['hoge']の中身を消去したいのですが、どのようにすればいいでしょうか? 記入漏れの時にはそのデータが残り、すべてを記入してデータ送信後は再び何も書かれていない状態にしたいのです。できれば、Javascriptを使わないでやりたいと考えています。よろしくお願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう