- ベストアンサー
データの受け渡しについて
- データの受け渡しについての初心者向け質問として、受け渡しのデータ数の上限、空の値の受け渡しの文法的な許容範囲、数値と文字の混在、a4変数の結果の違い、そしてgetとpost methodの違いについて質問があります。
- 質問の1点目は、受け渡しのデータの数に上限があるかどうかです。2点目は、空の値の受け渡しは文法的に許容されるかどうかです。3点目は、数値と文字、空変数の混在した受け渡しに問題はないかどうかです。4点目は、a4変数の結果が異なる理由についての質問です。5点目は、上記の問題を解決するためにmethodをpostに変更するべきかどうかです。
- 質問者が作成したformには9個の受け渡しデータがあり、データの受け渡し後に表示されるurlが質問文中に記載されています。質問者はデータの受け渡しに関する複数の疑問点があり、それぞれについて解答を求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1で回答した者です。 (4)に関して、個人的に不思議でしょうがないのは >Response.Write "a4: """ & Request.QueryString("a4") & """<br>" >の結果は >a4:"" >となるのですが、その直後に >a4 =request.querystring("a4") >response.write (" a4 " & a4 & "<br>") >と記述すると >a4集合住宅 >と表示される。 という部分です。 スペルミスや文法上の誤りは無いとの事ですので、前半のQueryStringと後半のQueryStringとも同じ値が保持されている為、実質的にはどちらも表示されていいはずです。なのに前半は空!? ということは、 ほかのa1~a9までa4と同様のチェックライトをしたとき、a4と同じ様に、前半のQueryStringは空で、後半QueryStringには値が入っているという状況なんでしょうか? 今後詳しい質問があった場合、質問者さんの本物のコードを追って見ないと、ちょっとわからないかもしれませんね。(ご自分ではたいしたことないと思っている部分が問題になる事もありますし。。) <ご質問> >コンボボックスとテキストボックスの混在を前提にしたときに、 >何か注意することはあるのでしょうか <回答>特にないはずです。当然ながらコンボボックスやテキストボックスの正しい使い方が前提となります。 さて、ここまで書いて「何も解決してないじゃん!」という感じになってきましたので、次のようにしませんか? ・実際に利用されるページには色々なコードが含まれて居ますので、問題の部分だけがわかりやすくなるようにテストページを作成して考える。 [用意するページ] test1.asp←フォーム内にa1からa9があるページ test2.asp←a1からa9までの授受されたデータを表示するページ (上記ページは当然ながら、見た目はどうでもいいです) なるべく問題点だけをシンプルにしてコードを開示していただければ、もっと具体的にアドバイスなど出来るかと思いますが、どうでしょう。 (気分を悪くなさらないで欲しいのですが、不思議な挙動をする場合、大抵人間の制御ミス・コーディングミスが多いものです。)
その他の回答 (1)
- corp
- ベストアンサー率40% (13/32)
こんにちは。 >(1)受け渡しのデータの数に上限はあるのでしょうか。 <回答>GETに関しては、上限ありです。処理するWebサーバ側にも依存します。あまり大きなデータ受け渡しには向いていません。 >(2)a1の受け渡しの値は何も入っていない空っぽの状態ですが、これは文法的に許容範囲なのでしょうか。 <回答>問題ありません。 >(3)上記の例では、数値、文字、空変数などが受け渡しの値として混在しているのですが、問題ないでしょうか。 <回答>問題ありません。 >(4)現在、開発している段階で、チェックライトを何度か書かせているのですが、・・・ <回答>質問されている部分だけだと問題は無いように思うのですが、On Error Resume Next とか使ってます? (On Error Resume Nextを使うと、エラーがあったときもエラーで止まることなく、下の行へ処理が移行しますので。。。) 本来は出力されてよいはずですので、シンタックスエラーなどが考えられるかと思います。 >(5)methodにはgetとpostとありますが、上記のような問題を解決するのに、・・・ <回答>上記の問題(?)の解決とGETからPOSTへの変更による違いはありません。 ※GETについてまとめると 1.非常に簡単で便利なデータ授受手段だが、URLアドレス上に実データが露出してしまう。 2.送信できるデータ量に制約がある。 ということですので、上記に影響がありそうならばPOSTを利用してください。 POSTを利用したときは、 a4 =request.querystring("a4") としていた部分を a4 =request.form("a4")とするだけです。
お礼
早速の回答、ありがとうございました。 丁寧な書き方で回答して頂いたので とても読みやすく、助かりました。 回答を参考にテストしてみた結果を補足に 書きますので、ご意見頂けると幸いです
補足
(4)の回答について On Error Resume Nextは使っていませんので エラーが出れば、何らかのメッセージが出るのですが 出ないまま、プログラムは↓へ流れているようです。 (5)の回答について postでのテストを行ってみましたが、(4)で質問した状況は 変わりませんでした。 以上をふまえて、違うところに原因があるのかと思い テストしてみると意外なことがわかりました。 a4以外は <input type="text" name="a***** でテキストボックスにデータを入力するタイプ a4は <select **** でコンボボックスで入力するタイプ でフォームを作っています。 a3をコンボボックスタイプで選択できるように書き換えたところ うまくデータの受け渡しができているような結果が出ました そこで質問なのですが、 コンボボックスとテキストボックスの混在を前提にしたときに、 何か注意することはあるのでしょうか 補足に質問を書くのはいけないのかもしれませんが よろしくお願いします
お礼
何度も、手を煩わせてしまって本当にありがとうございます。 >>(気分を悪くなさらないで欲しいのですが、不思議な挙動をする場合、大抵人間の制御ミス・コーディングミスが多いものです。) いやぁ・・・実際、些細なことで動かないことが多いので、 ご指摘の点については、かなり可能性が高いと思います。(;;) 身近に、相談する人がいないため、OKWEBを利用しているのですが、 やっぱり、隣で見てもらうアドバイスが一番ですから・・・ なんだかんだしながら、いろいろとやっていたら、 問題になっていた部分が動いてしまって、結果としては求めるものができてしまったので、 ここから先、難しいところへのめり込むことはないのですが (4)の状態については、最後まで解決していません。 非常に不思議で仕方ないのです。私も・・・ 本当の根本問題は、数値を受け渡したときに、 受け渡した先で、数値として認識されない という問題点を自分なりに解決しようと思ったら、芋づる式でいろいろな問題点が 出てきてしまった次第です。 最終的には、整数レベルで扱えば問題ないASPを構築していたので すべての変数を演算の時にint関数に通すという、掟破りのコーディングをしてしまいました。 (4)問題については解決していないので、時間を改めて発生するとは思いますが アドバイスして頂いたtest1.asp, test2.aspはテストしてみたいと思っています。 どうも本当にありがとうございました。