- ベストアンサー
フォームに渡したい
submitをonClickした時にスクリプトでフォームの内容を判定して、結果をhidden属性のフィールドに入れるように作成しているのですが、CGIにデータが渡りません。どうすれば渡るようになるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>飛ばないで白い画面になってしまいました 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; のようにします。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>データが挿入されるタイミングと送信されるタイミング document.writeは、動的にHTMLの構造を作るのですが、 HTMLの表示(を作成している)時でないと、 表示されてしまってから、書き込もうとすると新しく書き直すということになって元のページが失われてしまいます なので、送信のタイミングとは直接関係ありません。
お礼
新しく書き直されてしまうのですか。 勝手にhtmlの下のほうに追加してくれると 思ってしまっていました。 色々と勉強になりました。 どうもありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
とりあえず、エラーになってる部分 document.write(<input type="hidden" name="sum" value="a">); の類のやつは document.write('<input type="hidden" name="sum" value="a">'); のように書き出す全体をシングルクォートでくくらないとだめです。 * document.writeしないで、最初からhidden項目を作って置いてvalueをセットすればいいような気もしますが・
補足
ご回答ありがとうございます。 シングルクォートでくくらないとだめなのですね。 早速やってみたら、スクリプトエラーが出なくなりました! なのですが、こんどは動きが止まってしまい、CGIにも 飛ばないで白い画面になってしまいました。これもスクリプトが原因となっているのでしょうか?
補足
早速ご回答の通り修正したところ、無事CGIに データを飛ばせるようになりました。 どうもありがとうございます。 データが挿入されるタイミングと送信されるタイミングが 合っていなかったのですね。とっても勉強になりました。 今度はCGIの方がうまく動かないようなのですが、CGIのカテゴリで質問をしたほうがいいのでしょうか・・・ もしお分かりになればご指導いただけると助かります。