• ベストアンサー

フォームに渡したい

submitをonClickした時にスクリプトでフォームの内容を判定して、結果をhidden属性のフィールドに入れるように作成しているのですが、CGIにデータが渡りません。どうすれば渡るようになるのでしょうか?

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>飛ばないで白い画面になってしまいました document.writeで動的に書き込むタイミングでしょうね。 document.writeでhiddenフォームを作るのではなくて、 あらかじめ作って置いたらどうでしょうか </form>の前に <input type="hidden" name="sum" value=""> を入れておきます。 スクリプトの方では、 case "A": document.send.sum.value="a"; break; case "B": document.send.sum.value="b"; break; case "C": document.send.sum.value="c"; break; case "D": document.send.sum.value="d"; break; のようにします。

tamitomo
質問者

補足

早速ご回答の通り修正したところ、無事CGIに データを飛ばせるようになりました。 どうもありがとうございます。 データが挿入されるタイミングと送信されるタイミングが 合っていなかったのですね。とっても勉強になりました。 今度はCGIの方がうまく動かないようなのですが、CGIのカテゴリで質問をしたほうがいいのでしょうか・・・ もしお分かりになればご指導いただけると助かります。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>データが挿入されるタイミングと送信されるタイミング document.writeは、動的にHTMLの構造を作るのですが、 HTMLの表示(を作成している)時でないと、 表示されてしまってから、書き込もうとすると新しく書き直すということになって元のページが失われてしまいます なので、送信のタイミングとは直接関係ありません。

tamitomo
質問者

お礼

新しく書き直されてしまうのですか。 勝手にhtmlの下のほうに追加してくれると 思ってしまっていました。 色々と勉強になりました。 どうもありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

とりあえず、エラーになってる部分 document.write(<input type="hidden" name="sum" value="a">); の類のやつは document.write('<input type="hidden" name="sum" value="a">'); のように書き出す全体をシングルクォートでくくらないとだめです。 * document.writeしないで、最初からhidden項目を作って置いてvalueをセットすればいいような気もしますが・

tamitomo
質問者

補足

ご回答ありがとうございます。 シングルクォートでくくらないとだめなのですね。 早速やってみたら、スクリプトエラーが出なくなりました! なのですが、こんどは動きが止まってしまい、CGIにも 飛ばないで白い画面になってしまいました。これもスクリプトが原因となっているのでしょうか?

関連するQ&A