• ベストアンサー

jacascriptでのPOST送信について

初めまして。 今回お聞きしたい事は、jsで取得した別フレームの文字列を、URLのパラータに付け、 actionに指定したものをpostで送るというものです。 get送信の場合は文字数制限があるためpostで送りたいです。 frame1:main frame2:sub frame1からframe2のcgiへpost送信を行いたいです。 main側でボタンを押した時に、subに表示されているテキストエリアの文字列を取得し、 それをurl+="prm="+prm;の形でurlのパラメータに設定し、document.f1.action=url; としてpostで送信している。 のですが、prm変数のパラメータの量が多い為、エラーが発生してしまっているみたいです。 例) //別フレームから値をprmdataに格納 var prmdata = parent.out.document.inform.csvedit.value; //送信url生成 url += "prm1=" + prmdata; document.form.taget = sub; document.form.method = post; document.form.action = url; ※上記方法でパラメータ自体送信出来るのですが、 prmdataのパラメータの量が多いとエラーとなってしまいます。 そもそもurlにパラメータを付けpost送信することは可能なのでしょうか? どうにか回避したいと考えています。 どなたかご教授ください。 よろしくお願いします。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

例えば以下のような、hiddenのフォームを用意しておいて、 <form action="xxx.cgi" method="post" name="test" target="sub"> <input type="hidden" name="prm1" value=""> </form> var f = document.forms['test']; f.elements['prm1'].value = prmdata; f.submit(); みたいにしてあげれば簡単では? フォームをどちらのソースに作成しておくかによって、若干内容が変わってくると思いますが、要領は同じ。 ついでに… 全体像が不明なのでわからないけれど、 >url += "prm1=" + prmdata; は url += "?prm1=" + prmdata; では? また、データの内容によってはエンコードが必要では?

pekoo39
質問者

お礼

回答ありがとうございます。 無事作成することができました。 隠しパラメータとしてhiddenのを作成し、そこに取得した値をセットしpost送信することで解決しました。 本当にありがとうございました。

その他の回答 (1)

回答No.1

> そもそもurlにパラメータを付けpost送信することは可能なのでしょうか? 出来ます。 URLに付いているパラメータとPOSTで送られてきたデータをどのように扱うかはCGIアプリケーションの作り方次第です。 一般的な作り方では、METHODにPOSTが指定してあれば、URLのパラメータは無視されます。 が、 「URLが長い」というエラーですので、GETとかPOSTとかは関係ありません。 URLに付けるパラメータを調整して、エラーがでない程度の長さにする必要がありそうです。

関連するQ&A

  • post送信のについて

    post送信について ボタン部分は画像にし、下記のように設定しましたが ちゃんとできてますでしょうか?ボタンを押しても飛ぶのはとびますが ちゃんとPOST送信になってるのか不安です。 ちなみにURLを残さないようにしてるはずがfirefoxだと残ってましたので 間違ってると思ってます。。 <script type="text/javascript" > var element = document.createElement("input"); document.form[0].appendChild(element); document.form[0].method = "post"; document.form[0].action = "test.aspx"; </script> <body> <form action="URL" method="post"> <input name="form1" type="image" src="images/test.jpg" alt=""> </form> <form action="URL2" method="post"><input name="form2" type="image" src="images/test.jpg" alt=""> </form> </body>

  • 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でしょうか?   

  • 違うフレームにあるフォームをsubmit(送信)

    JavaScriptかPHPかでも質問なのですが、Mainフレームには送信ボタンはありませんし、出来ない(しない)ものとします。 かわりにSubフレームが読み込まれたときにJavascriptでMainフレームのMainFormフォームをSubmitさせるような記述は出来ますでしょうか? その後PHPの変数でデータを操作しようと思っているのですが、PHPでデータを受け取れません。 要は、Javascriptを使わなくてもいいのですが、PHPで他のフレームにあるフォーム内のデータを受け取りたいのです。 どなたか助けてください。 ★★★★★★★★★Mainフレーム★★★★★★★★★ <form name="MainForm" action="Sub.php" target="Sub" method="post"> <input name="ABC" type="text"> </form> ★★★★★★★★★Subフレーム★★★★★★★★★★ -----JavaScript部------- parent.Main.document.MainForm.submit(); -----PHP部------- <?php extract($_POST); global $ABC; echo $ABC; ?>

    • ベストアンサー
    • PHP
  • formによるパラメータ送信がうまくいきません

    こんばんは。 HTML初心者です。 formによるパラメータを送信しようと考えているのですが、 送信方法によってパラメータが異なってしまい、困っています・・・。 以下のようなformを使って、パラメータをpostしています。 <form name="form1" action="http://xxx/xxx/xxx" method="post"> <input type="text" name="text1"> <input type="submit" value="sousin" name="submit1"> </form> 送信してみたところ、送信方法によって、送るパラメータに差異があることに気が付きました。 ************************************************** 1.テキストに文字列を入れて、送信ボタン(sousin)を押す。 ->リクエストパラメータが、submit1=sousin と text1=文字列 になる。 2.テキストに文字を入れて、フォーカスがテキストにある状態で、Enterを押す。 -> リクエストパラメータが、text1=文字列 だけになる。 ************************************************** 1.と2.どちらの場合でも、 submit1=sousin と text1=文字列 を送りたいと考えています。 クエリストリングは使いたくないので、 onclickをつけてみたり、JavaScriptで少し考えてみましたが、 どうしてもうまくいきませんでした・・・。 2.のように、Enterを押したときでも、 submit1=sousinを送るようにするのはどうしたらよいでしょうか?? 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • 1アクションでPOST・GET、両方送信したい

    1つのフォームからボタンをクリックして、 POST・GET送信と、両方飛ばすには、どうすればよいでしょうか? URLに「表示させたいパラメータ」と「表示させたくないパラメータ」 があります。 「表示させたいパラメータ」は、GETで、 「表示させたくないパラメータ」は、POST送信したいのですが、 1つのフォームで、同時に飛ばす方法が分かりません。 <form method =post action=hoge.php>  <input type=text name="piyo" value="piyo">  <input type=hidden name=puyo_id value=puyo>←これだget送信したい  <input type=submit value="送信"> </form>

    • ベストアンサー
    • PHP
  • リンクで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する場合

    function formsubmit() { document.getElementById('form1').submit(); document.getElementById('form2').submit(); } <form name="form1" method="post" action="Aサーバー"> ~ </form> <form name="form2" method="post" action="Bサーバー"> ~ <button onclick="formsubmit()">送信</button> </form> 以上でA、BサーバーにPOSTした場合ですが 送信後の挙動がよく分かりません、たとえばそれぞれのサーバーでエラーに なった場合や戻り値を取得する場合や、エラーチェックも送信元のサーバーで 取得する方法が分かりません、実際にサンプルで動かしてみましたがAサーバーに POSTされてないようなのですが、Aサーバーが外部サーバーでBサーバーが送信元 であった場合、Aサーバーでの処理はどうしたらいいかイマイチわかりません header("Location:でBサーバーに戻せばいいのでしょうか? よろしくお願いします。

  • HTMLのpost送信について

    HTMLのpost送信について 送り側で入力した文字がphpのプログラムへ送られ、 ブラウザが開いて送られた文字列が表示されるはず なのですが、HTMLファイルの送信ボタンを押しても 無反応です。どこがまちがっているいのでしょうか? 送り側プログラム ファイル名:okuri1.html <html> <head> <hitle>送り側プログラム</title><br> </head> <body> <from method="post" action="uke1.php"> <input type="text" name="a"size="20"> <br> <input type="submit" value="送信" size="20"> </form> </body> </html> 受け側プログラム ファイル名:uke1.php <?php print POST["a"]; ?>

    • ベストアンサー
    • PHP
  • foreachの中で、リンクをPOST送信したい

    ・PHPのforeachで一覧表示しているリンクテキストをクリックして、POST送信したいです ・この時、foreachの$val['url']内容に応じて、action送信先を変更したいのですが、どうすれば良いでしょうか? ■完成イメージ <?php foreach ($key as $val): ?> <form name="test"> <a href="#" onClick="hoge($val['url'])"> </form> ・1行目内容 … 送信先 $val['url'] ・2行目内容 … 送信先 $val['url'] ・3行目内容 … 送信先 $val['url'] ■分からないこと ・foreachで回した後にクリックすることになると思うので、現状だとaction送信先は、全てループ一番最後の$val内容固定になってしまいます(多分…) ・リンクテキストのPOST送信先を、foreach内容に応じて変えるにはどうすれば良いでしょうか? ※foreach内容に応じて、リンクテキストがPOST送信できるのであれば、やり方は何でも良いです

  • JavaScriptにおいてPOSTで送信されたデータを取得出来ますか

    <form action="自分" method="POST"> <input type="hidden" name="abc" value="1"> <input type="submit" name="OK" value="OK"> </form> 上記のように、POST渡しで送信したとき、Javascriptにて、hiddenのデータを取得することができるのでしょうか? 出来るのであればその方法を教えてくださいませんか。 よろしくお願いします。

専門家に質問してみよう