- 締切済み
javascript php フォームについて
javascriptで作ったフォームをphpに送信したいのですが、上手く送信できません。 どのようにすれば上手く送信することができるでしょうか? 回答お願いします。 javascript側のソース <body> <form name="nform1" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問1</p> <p> (1)<input type="text" name="kaitouran11" size="20"> (2)<input type="text" name="kaitouran12" size="20"> (3)<input type="text" name="kaitouran13" size="20"> (4)<input type="text" name="kaitouran14" size="20"> </p> </form> <form name="nform2" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問2</p> <p> (1)<input type="text" name="kaitouran21" size="20"> (2)<input type="text" name="kaitouran22" size="20"> (3)<input type="text" name="kaitouran23" size="20"> (4)<input type="text" name="kaitouran24" size="20"> </p> </form> <form name="nform3" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問3</p> <p> (1)<input type="text" name="kaitouran31" size="20"> (2)<input type="text" name="kaitouran32" size="20"> (3)<input type="text" name="kaitouran33" size="20"> (4)<input type="text" name="kaitouran34" size="20"> </p> </form> <input type="button" value="送信" onClick="send()"> </body> php側のソース <body> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </body>
- みんなの回答 (5)
- 専門家の回答
みんなの回答
結論から述べると、以下の回答No.1が事実を物語っています。 http://okwave.jp/qa/q8145396.html 複数のフォームを1つのリクエストにまとめることはHTTPの仕様上不可能です。素直にAjaxで分割送信させましょう。単に「対応しやすい」「確認しやすい」だけでとどめられると何か納得がいかないので一応確認させていただきます。 問1に全て回答 ↓ Ajaxで送信させる ↓ 問2に全て回答 ↓ Ajaxで送信させる ↓ 採点結果をチェック ということをしたいんでしょうか・・・?
>> htmlからphpに HTML全部手打ちするよりも配列データとして格納しておいたほうがラクだと思いませんか?ファイルを分けるにしても、PHPファイルからPHPファイルへ送信する形を取ると思います。わざわざ静的なHTMLファイルを手作業で作るメリットは皆無と言えるでしょう。 >> 複数個フォーム 他の回答者さんからも指摘がありますが、どうしてフォームを分ける必要があるんでしょうか? <script type="text/javascript"> document.forms['nform1'].submit(); document.forms['nform2'].submit(); document.forms['nform3'].submit(); </script> のように全て送信するなら分けても分けなくても同じ、というか普通は分けません・・・私が前の回答で提示したサンプルで出力されたHTMLソースを見てもらっても分かると思いますが、「複数のfieldset要素を外側から1つのform要素に含める」という形を取っています。 form要素を分けるときは、「問2だけを送信」といった形を取りたいときだけです。
サンプル http://pastebin.com/DVMFd6NS こういうものを作りたいんでしょうか。とりあえずコピペで動くので試してみてください。
補足
回答ありがとうございます。 形式としては教えていただいたurlのような内容ですが、 コンセプト的なものは似ているのですが htmlからphpに複数個フォームを目的とする場所に送信したいの です。
- yambejp
- ベストアンサー率51% (3827/7415)
javascriptが設定されていないことはおいておいて とりあえずは、formを一つにして普通にサブミットするところから始めてください 問いごとにformをわけてしまえば結局問いごとにしか値はとびません
補足
サブミットするというのはボタン部分の onclick→onsubmitでしょうか? それとも、 <script type="text/javascript"> document.forms['nform1'].submit(); document.forms['nform2'].submit(); document.forms['nform3'].submit(); </script> というようにすることでしょうか? 後者であるなら現在上記のようにしてありますが、 上手く目当ての場所にフォームが送信できません(ページは切り替わるのですが...)
- bm_hiro
- ベストアンサー率51% (200/388)
とりあえず。。。 > javascript側のソース javascript が見当たらんとです。 かろうじて「 onClick="send()" 」で、その痕跡があるぐらい。 あと、まぁ、PHPの書き方がなげやり過ぎ。 JavaScriptとか「この言葉が何を指しているのか」とか いろいろ ちゃんと理解してからにした方がいい気がする。
補足
すいません。日本語がおかしくて... javascriptという表現おかしいですよね 結局何がやりたいかというと htmlからphpにフォームを送信したいということです。 しかし、今回は複数個フォームで用意しているので 上手くひとつのときみたいに値がphpに渡らなくて困っているのです。 ソースを訂正させていただくと htmlのソース <script type="text/javascript"> document.forms['nform1'].submit(); document.forms['nform2'].submit(); document.forms['nform3'].submit(); </script> javascript側のソース <body> <form name="nform1" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問1</p> <p> (1)<input type="text" name="kaitouran11" size="20"> (2)<input type="text" name="kaitouran12" size="20"> (3)<input type="text" name="kaitouran13" size="20"> (4)<input type="text" name="kaitouran14" size="20"> </p> </form> <form name="nform2" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問2</p> <p> (1)<input type="text" name="kaitouran21" size="20"> (2)<input type="text" name="kaitouran22" size="20"> (3)<input type="text" name="kaitouran23" size="20"> (4)<input type="text" name="kaitouran24" size="20"> </p> </form> <form name="nform3" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問3</p> <p> (1)<input type="text" name="kaitouran31" size="20"> (2)<input type="text" name="kaitouran32" size="20"> (3)<input type="text" name="kaitouran33" size="20"> (4)<input type="text" name="kaitouran34" size="20"> </p> </form> <input type="button" value="送信" onClick="send()"> </body> phpのソース php側のソース <body> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </body> 補足としてphpのソースはこのような書き方しか現状知らないので なげやりと抽象的おっしゃられても困ります。具体的にどのように修正すればいいのでしょうか?
補足
>PHPファイルからPHPファイルへ送信する形 たしかに、フォームとかだけを送るならその方式を持ち要りますがgoogleマップなどのものはPHPではなくajaxを持ち要りますよね。その一部の中身について今回質問させていただいているのです。ですのでhtmlから行おうと考えているのです。 >> 複数個フォーム 今回は全フォームを送りますが、form要素を分けるときは、「問2だけを送信」といった形にも対応しやすいメリットがあったりプログラムの確認がしやすいなどのメリットがあります。