• ベストアンサー

ボタンを使用せずにpostでデータを送信する。

お世話になります。 PHP5.0+Mysql5.0を使用してサイトを構築しています。 表示されているのがa.phpでその中のURLをクリックしてb.phpにデータを表示しようとしています。 そのときに、データをPOSTで送信したいのですが、 デザイン的な問題でボタンを使用せずに、リンクをクリックすることでPOSTデータを送信したいと考えています。 過去の質問を参考にしながらここまでは完成できました。 <form name="form1" action="b.php" method="post"> <input type="hidden" name="select" value=""> </form> <a href="" onclick="document.form1.select.value='datadata';document.form1.submit();return false;"> data</a> ただ、ここで問題が・・・ そのb.phpを新しいウインドウで大きさを使用して開きたいのです。 <a href="" onclick="window.open('b.php','','width=400,height=400'); return false;" > 「data1」を送信します</a> こうすれば出来るのはわかったのですが、上記2つを 同時に実行する方法がわかりません。 また、これはこうした方がいいというアドバイスも大変助かります。 よろしくご回答お願いします。

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

  • ベストアンサー
  • taseki
  • ベストアンサー率66% (155/233)
回答No.1

先に目的サイズのウィンドウを開いておいて、フォームのtargetで指定してはどうでしょうか。 <form name="form1" action="b.php" method="post" target="res"> <input type="hidden" name="select" value=""> </form> <a href="" onclick="window.open('about:blank','res','width=400,height=400'); document.form1.submit(); return false;" >「data1」を送信します</a> 別の方法としては、開かれたウィンドウが自分で自分のサイズを調整する、とか。 蛇足ですが、スクリプトが動かないブラウザのためにhref=""にも何か入れておいたほうがいいと思います(「href="b.php?select"」など)。

orehataro
質問者

お礼

ありがとうございます。 先にウィンドウを開いてという方法は気づきませんでした。 上記の方法で出来ました。 スクリプトが動かない場合に入れることは考えましたが、 GETではデータの受け渡しを禁止しているため、空白に した次第です。 ありがとうございました。

その他の回答 (1)

  • pipipi523
  • ベストアンサー率40% (148/365)
回答No.2

ちょっと強引ですがこんなのでどうでしょう? <html><body> <script Language="JavaScript"><!-- function Openout() { subWin = window.open("","subwindow","width=320,height=240"); subWin.document.open(); subWin.document.write("<form action='test.html' name='send' method='post'><input type='hidden' name='aaa' value='data1'></form>"); subWin.document.close(); subWin.document.send.submit(); } // --></script> <a href="#" onclick="Openout()" >「data1」を送信します</a> </body></html>

orehataro
質問者

お礼

ありがとうございます。 僕の環境ではこの方法ではデータが渡りませんでした。 参考にさせていただきます。

関連するQ&A

  • javascriptのsubmitを使ってデータをpost送信したい。

    javascriptのsubmitを使ってデータをpost送信したい。 aaa.phpというファイルに複数のチェックボックスがあり、リンクをクリックしたときに チェックされた値のみをbbb.phpへ引き渡したいです。 自分なりに書いてみましたが、bbb.phpへは遷移するものの、データが表示されません。 document.form1.method部分をGETにすると、データは表示されますが、POSTにすると うまく引渡しができません。 的外れな書き方をしているかもしれませんが、どなたかご教授いただけませんでしょうか? よろしくお願いいたします。 【追記】 チェックボックスの数は固定ではなく変動があり、値も実際はランダムです。 デザインの都合上どうしてもaタグでしか記述が出来ません。 ------------------------------------------------------------------------------ 【aaa.php】 <script language="JavaScript"> <!-- function mailform() {  var i = 0;  var chkvalue = "";  var count = 0;  var chk = document.getElementsByName('no');  for(i=0; i<chk.length; i++) {   if (chk[i].checked == true) {    chkvalue += chk[i].value;    count++;   }  }  if(count == 0) {   alert("チェックされていません。");   return false;  } else {   document.form1.action = "./bbb.php";   document.form1.method="post";   document.form1.submit();  } } //--> </script> <a href="#" onClick="send()">bbb.phpへ遷移する</a> <form name="form1">  <input type="checkbox" name="no" value="1"><br />  <input type="checkbox" name="no" value="2"><br />  <input type="checkbox" name="no" value="3"><br />  <input type="checkbox" name="no" value="4"><br /> </form> 【bbb.php】 var_dump($_POST["no"]);

  • POST送信を別ウインドで行いたいのですが・・

    POST送信を別ウインド(タブ)で行いたかったので、 以下のようにしました。 <form action="test.php" name="form1" method="post" target="tar1" onsubmit="window.open('','tar1')"> <input type="hidden" name="test" value="abcdefg"> </form> <a href="" onclick="document.form1.submit();return false">POST送信</a> 右クリック、マウスホイールクリックした場合に、 IE8の場合は新ウインドが開き、FireFoxの場合は新タブで開くようになりました。 この挙動の差については特に問題ありません。 (現在の画面と別画面で行えればいいので) 問題は、リンクを右クリックしての「新しいタブで開く」「新しいウインドで開く」を選んだ場合です。 この場合では、「<a href="" 」の部分をリンクとして認識してしまうようで、 同じページが表示されてしまいます。 かといって、href="test.php"としておいてもPOSTデータが無しになってしまいます。 POST送信を別ウインドで行わせたい場合に、以下操作を満たせるやり方はありますでしょうか。 ・リンクを右クリック、マウスホイールクリック ・リンクを右クリックしての「新しいタブで開く」「新しいウインドで開く」選択

  • リンクで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>

  • documentにてデータ送信

    すいません、初めてまだ1カ月なので不慣れで分からない場所があります。 アドバイス宜しくお願い致します。 <form name="form1" action="test" method="post"> <input type="hidden" name="str" value="<%=List[i].Code() %>"></form> <a href="#" onclick="document.form1.str.value='data1';document.form1.submit();return false;"><%=List[i].Code()%></a> こんな感じでアンダーバーが出ているリンク文字を押すとデータと一緒に画面移動をしたいのですが、移動はしてもデータが送られてきません・・・ 2、戻るボタンを作成したのですが、更新や削除をする画面では戻るを押すとbackにて1画面戻るので入力前の画面に戻ります、なんとか画面を呼び出した画面に戻りたいのですが、何かいい方法ありますか??

    • ベストアンサー
    • Java
  • リンクをクリックした時にformからPOST送信したい。

    HTML、PHP、JavaScript等でサイトを作っているのですが・・・。 【実現出来ている例】 <form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">  <input type="submit" value="送信"> </form>  submitボタンを一つ置いて、それがクリックされた場合に formの内容をPOSTで送信する。 【実現したい例】 <form name="form1 method="post">  <a href="Next.php" onClick="???">???</a> </form>  formの中のリンクをクリックされた場合に、formの内容を POSTで送信したいのですが、その実現方法がわかりません。 GETで送るという手もあり得ますが、今回はどうしてもPOST したいのですが。

    • ベストアンサー
    • HTML
  • 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
  • POST送信かGET送信か

       ------------------------------------------ <SCRIPT language="JavaScript"><!-- function GoPage(url, id){ document.form.action = url; document.form.id.value = id; document.form.submit(true) } // --></script> <!--中略--> <input type="submit" name="submit" value="送信" onClick="javascript:GoPage("a.php", "1")">    ------------------------------------------    上記のような処理を書いた場合、 遷移先である a.php で id(値:1)を取得する時は POSTで受け取るのですか?それともGETでしょうか?   

  • テキストリンクでデータの受け渡し。

    PHPの勉強中で、参考書を見ながらショッピングサイトを作成しています。 カテゴリ別に表示したいと思い、データベースに商品の登録をし、 WEBページでカテゴリでの絞込みをしたいのですがうまくいきません。 以下のような、ラジオボタ形式では上手く動きました。 <form method="post" action="hoge.php" enctype="multipart/form-data"> 商品カテゴリーを選択してください。<br> <label><input type="radio" name="category" value="0">0</label> <label><input type="radio" name="category" value="1">1</label> <label><input type="radio" name="category" value="2">2</label> <input type="submit" value="確認"> </form> ラジオボタンでも、確認ボタンを押さなくても、 テキストをクリックすれば受け渡し先のページに飛ぶ形式ならいいのですが。。。 以下のテキストリンクの場合だと、一番下の値しか飛んでくれず、困っています。 <form name="category" action="hoge.php" method="post"> <input type="hidden" name="category" value="1"> <input type="hidden" name="category" value="2"> <a href="javascript:void(0)" onclick="document.category.value='1'; document.category.submit(); return false;">1</a> <a href="javascript:void(0)" onclick="document.category.value='2'; document.category.submit(); return false;">2</a> </form> どなたか詳しい方、ご回答をお願いします。

    • ベストアンサー
    • PHP
  • submit関数の使い方

    javascript部分 function sendform(formname){ document.formname.submit(); } html部分 <form action="test.html" method="post" name="form1"> <input type="text" name="textvalue" value="1"> </form> <a href="javascript:void(0)" onclick="sendform('form1'); return false;">click1</a> <form action="test.html" method="post" name="form2"> <input type="text" name="textvalue" value="2"> </form> <a href="javascript:void(0)" onclick="sendform('form2'); return false;">click2</a> 今は、上記のように書いています。引数でフォーム名を渡し、その値によって送信フォームを変えたいのですがうまくいきません。if文を使って if(formmei=="form1"){ document.form1.submit(); }else if(formmei=="form1"){ document.form2.submit(); } という方法も考えたのですが、フォーム名だけ変えることができないかと考えています。 よろしくお願いします。

  • formでPOSTするのと同じ動作をボタンとjavascriptで実現したいのですが

    <form name="myFORM" method="POST" action="xxx.php"> <input type="text" name="NAME"> <input type="submit" value="送信"> </form> 上記と同じ動作を <button onclick="fpost('tanaka','POST','xxx.php')">送信</button> とjavascriptで実現したいのですが可能でしょうか? 可能でしたらどのようなスクリプトになりますでしょうか? document.myFORM.submit();とかではなく、formタグを全く使わずPOSTしページ遷移したいのですが。 XMLHttpRequestとlocation.replace()とかでできるのでしょうか?? すみませんがよろしくお願い致します。