GET方式でデータの受け渡しをPOST方式にする方法とは?

このQ&Aのポイント
  • GET方式でデータの受け渡しをPOST方式にする方法はありますか?
  • リンクにマウスを乗せたときにURLが出ない方法はありますか?
  • submitボタンを使用せずにデータの受け渡しを行える方法はありますか?
回答を見る
  • ベストアンサー

<a href=**?***=***>をGET方式で

<a href="abcd.cgi?mode1=1&mode2=2&mode3=3&mode4=4&mode5=5" > としたら、このままではGET方式でデータの受け渡しが行われますよね?そうではなく、テキストリンクでPOST方式でのデータの受け渡しをしたい場合はどうすればいいですか?その際、リンクにマウスを乗せたときにブラウザ左下にリンク先のURLが出るのも避けたいです。(←無理・もしくは実装が面倒ならこれはいいです。)submitボタンは使わない方向でお願いします。 GET方式だと、履歴に****?mode1=1&mode2=2&mode3=3&… と表示されてしまうようなので、<a href=....>リンクでなんとかそれを無くしたいという事情で質問しまた。

  • arcsin
  • お礼率46% (194/417)
  • HTML
  • 回答数1
  • ありがとう数3

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

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

JavaScript を使えば可能です。 まず、POST 送信用のフォームを用意します。 必要なパラメータは INPUT タグの type="hidden" を使い、ここに全て書き出します。 <form name="Form1" action="abcd.cgi" method="post"> <input type="hidden" name="mode1" value="1"> <input type="hidden" name="mode2" value="2"> <input type="hidden" name="mode3" value="3"> <input type="hidden" name="mode4" value="4"> <input type="hidden" name="mode5" value="5"> </form> リンクの方はこのフォームを送信するように記述します。 この時、リンクからフォームが操作できるように、フォームに名前(ここでは「Form1」)を付けておきます。 <a href="javascript:document.Form1.submit()">送信</a> この方法ならリンクにマウスを乗せても、URLがステータスバーに表示されることもありません。 ただし、このままでは JavaScript 依存になってしまうので、万人向けにしたいなら送信用リンクタグは JavaScript が有効な時だけ表示し、無効な場合は送信ボタンを表示するようにします。 <form name="Form1" action="abcd.cgi" method="post" style="display:inline"> <input type="hidden" name="mode1" value="1">     : <script type="text/javascript"><!-- document.writeln('<a href="javascript:document.Form1.submit()">送信</a>'); //--></script> <noscript><input type="submit" value="送信"></noscript> </form> ※フォームの中でリンクを表示するため、フォームがインライン表示されるようにスタイルシートを設定しています。

arcsin
質問者

お礼

ありがとうございます^^ アドバイスを元に無事解決いたしました。 またよろしくおねがいします~

関連するQ&A

  • 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
  • GETのメリットについて

    GETとPOSTでデータの受け渡しができるのは知っているのですが、 POSTのメリットは、データの受け渡しが見えないところで行われている。 (GETのようにアドレスにパラメーターが付き、値が見えたりしない。) ということが、インターネットや本で調べればわかったのですが、 GETを使用するメリットって何なのでしょうか? GETを使うメリットを教えて頂けないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • GETとPOST

    フォームでのデータの受け渡しで質問があります。 リンクにデータを埋め込んで、GETで次ページにデータを渡すという方法があると思うのですが、本を読んだりしたところ、クロスサイトスクリプティングやSQLインジェクションの攻撃にあう可能性も指摘してあったので、何となく今まではデータの書き込みを行うファイルへのフォームデータの受け渡しは、POSTを使ってやっています。 しかしながら、POSTを使うとコードが複雑になるような気もします。GETを使うのはあまり薦められないことなのでしょうか?それとも、これらの攻撃を決定的に回避できる方法があるものなのでしょうか? アバウトな質問ですが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • GETで渡した値の受け取り方

    <a href="xxx.cgi?id=hogehoge">リンク先</a> この"hogehoge"をリンク先のperlのソースで受け取るにはどうすれば良いのでしょうか? PHPでいう $id=$_GET['id']; のようなことをCGIでもやりたいのですが、どなたかご教授下さい。

    • ベストアンサー
    • Perl
  • <a href='aaa.php'>で、post形式で渡したい

    index.phpのformタグで、post形式でaaa.phpに送信したとします。 aaa.phpで表示した画面でたとえば <a href='aaa.php?kategori=$_POST[kategori]&kazu=$_POST[kazu]'>テスト</a> と出力するようにしたとすると、aaa.phpには「get」方式で渡されると思いますが、これをpost形式で渡すことはできるのでしょうか?

    • ベストアンサー
    • PHP
  • サブミットの違い

    jspに <form action="XXaction" method="post"> <a href="XXaction" onclick="setData()">○○△</a> <input type="submit" value="○○" onclick="setData()"> </form> のように記述してます。 (実際はonclickのjavascriptも実装してます) ボタンを押すとpostとしてサブミットされるのに、 リンクをクリックするとgetでサブミットされます。 1.なぜgetになるのでしょうか? 2.どうしたらpostで飛ばせるでしょううか?

    • ベストアンサー
    • Java
  • <A HREF=""></A>でリンクしません

    いくつかあるページのうち一つのページだけ <A HREF="xxx.html">xxxx</A>のリンクが、マウスで押しても 何も反応しません。どのリンクもダメです。 ソースをチェックに掛けてみたのですが特に問題もないようです。 このような場合どのようなことが考えられますでしょうか。 アドバイスお願いいたします。

  • POSTとGETを利用しようと

    サブミットのときにはgomiのデータが$_POST['gomi']にセットされキャンセルのときにはgomiのデータが$_GET['gomi']にセットされるようにしたいのですが x.html: <form action="x.php" method="post"> <input type="text" name="gomi"/> <input type="submit" value="set"/> </form> <p><a href="x.php">cancel</a></p> ではもちろんcancelをクリックしても$_GET['gomi']にgomiのデータがセットされません どうしたらできるでしょうか?

    • ベストアンサー
    • PHP
  • CGI間のデータ送信について(perl)

    perlのcgiで詰まってしまったので質問します。 現在困っていることは、cgiからcgiへの変数の値の受け渡しについてです。 色々調べてやってみたのですが、うまくいきません。 送信側で print "<form action = \"sendmail.cgi\" method=\"post\">"; print "<A href =\"sendmail.cgi?$array1[0]&$array1[1]&$array1[2]&$array1[3]\">sendmail.cgi</A>"; print "<input type=\"submit\" value=\" ボタンです。 \">"; print "</form>"; として 受信側で # postでもgetでも受信できるようにする if ($ENV{'REQUEST_METHOD'} eq "GET") { $data = '1'; $testmsg = "GETで受信"; $formdata = $ENV{'QUERY_STRING'}; print("$formdata<BR>"); } elsif ($ENV{'REQUEST_METHOD'} eq "POST"){ # こちらを使用している $data = '2'; $testmsg = "POSTで受信"; $length = $ENV{'CONTENT_LENGTH'}; read(STDIN,$formdata,$ENV{'CONTENT_LENGTH'});# $dataに受信する print("$formdata<BR>"); } else { $data = '3'; $testmsg = "受信することができませんでした。<BR>"; } としてpostにて受信しようとしています。 postのif文には入ったようなのですが、データが空っぽで何も入っていないようなのです。 何が原因なのでしょうか?助けてほしいです。

    • 締切済み
    • CGI
  • a href=のリンクについて。

    いつもお世話になっております。 今回分からないのは、 <td><a href="/php/hoge.php?id=<?=$row[0]?">STYLE="color:black"><?=$row["name"]?></td> と言うやり方では上手くリンクするのですけど、 echo "<td>".$row["name"]."</td>"; に対して上のやり方でリンクするように色々加工してみたのですが、 エラーが出て、上手く実装できないのです。 上の形のように下の形式でなんとかリンクを飛ばしたいです。 ご指導のほどよろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう