![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
Setojin | Åê¹ÆNo.31812 投稿日時: 2007-2-7 11:09 |
新米 ![]() ![]() 居住地: 投稿: 5
使用環境:
Win98SE,FLASH MX |
FLASHAのURLエンコーディングについて 初めて投稿させていただきます。
フラッシュで投稿フォームを作り、CGI側にデータをデータを渡したいのですが、 "_"や"$"などの文字はエンコーディングされ、"%5F"・"%24"となりCGIが受け取ってくれません。 これをCGI側を変更せずに、"_"や"$"のまま渡す方法はあるのでしょうか? HTMLのフォームの場合は問題ないのですが・・・。 どなたかご存知の方がおられましたら、その方法をご伝授いただけたらと思い、初投稿とさせていただきました。 よろしくお願い申し上げます。 使用FLASH MX。 |
KURAGE | Åê¹ÆNo.31813 投稿日時: 2007-2-7 12:00 |
常連 ![]() ![]() 居住地: 東京都 投稿: 199
|
Re: FLASHAのURLエンコーディングについて こんにちは
![]() "$"に関しては"%24"にURLエンコードされるのが正しい仕様なので、CGI側のデコーダを修正する事になるかと思います。 またHTMLフォームからの場合は問題無い、との事なので値が受け取れないのは別の箇所に問題があるのかもしれません。 どうしてもURLエンコードさせずにFLASHから値を送信したい場合はLoadVarsクラスのLoadVars.toString()をオーバーライドする事で実現出来ますが、動作保証はされておりません。 |
Setojin | Åê¹ÆNo.31824 投稿日時: 2007-2-7 22:39 |
新米 ![]() ![]() 居住地: 投稿: 5
使用環境:
Win98SE,FLASH MX |
Re: FLASHAのURLエンコーディングについて KURAGE様、返信ありがとうございます。
えっと、 FLASHフォームの場合、HTMLフォームでいう"name"に"_"が入っていると駄目なようなのです。 "$"は"name"ではなく、CGIに渡す変数なんですがね。 今突き当たっているのは・・・、 例えば、仮に簡単なフォームを作って LV = new LoadVars(); LV.in_name = t1; LV.in_mail = t2; ボタンクリックで LV.send(url,"","post"); とした場合、"LV.in_name"・"LV.in_mail"のように"_"が入っていると、CGIが正常に動作しません。 t3 = LV.toString();として内容を見てみると、"_"は"%5F"、"$"は"%24"とエンコーディングされていました。もしかしてこれが原因かなと思ったわけなのです。 試しに"_"をCGI共々に取ってしまうと一応動くようですが、HTMLフォームの場合、"neme"に"_"が入っていてもなんの問題もなく動くものですから。 なお、CGIに関しては、小生は不得意分野。しかも人様がお作りになられたものゆえ、全てを把握しておらず、できれば手をつけずに通りすぎたいと思う次第でして・・・。 それで、"$"に関してオーバーライドで可能とありますが、オーバーライドと申されますと、一旦LoadVars.toString()で値を取得して、その値を再定義すれば良いのでしょうか? もし、それで可能ならばやってみようと思います。 |
KURAGE | Åê¹ÆNo.31825 投稿日時: 2007-2-7 23:52 |
常連 ![]() ![]() 居住地: 東京都 投稿: 199
|
Re: FLASHAのURLエンコーディングについて こんにちは
![]() なるほど、恐らくCGI側でcontrol namesに対してデコードを行っていない事が原因ですね・・・。 LoadVars は LoadVars.toString() で生成された文字列をそのままサーバに送信する仕様みたいなので、 以下のように送信する内容を自前で実装してやればnameをURLエンコードせずに送信する事が可能です。 var myLoader = new LoadVars(); myLoader.toString = function() { return "in_name=" + escape(this.in_name); } 現象的にCGI側の修正も数行で済みそうな気がしますので、 制作された方に修正を頼むのが一番手っ取り早いかと思いますが ![]() |
Setojin | Åê¹ÆNo.31826 投稿日時: 2007-2-8 3:55 |
新米 ![]() ![]() 居住地: 投稿: 5
使用環境:
Win98SE,FLASH MX |
Re: FLASHAのURLエンコーディングについて KURAGE様、返信ありがとうございます。
お書き添えいただいた方法でやってみました。 "in_name"というnameが生成できたのを確認できました。ありがとうございました。m(_"_)m それで、あつかましいのですが、もう少し教えていただきたいのですが・・・。 実際は、 LV.in_name = t1; LV.in_mail = t2; LV.in_start = inst; ・ ・ ・ と複数続くのですが、これをどう繋げば良いか分かりませぬ。 一つはできるのですが、その後が・・・ ![]() var LV = new LoadVars(); LV.toString = function() { return "in_name=" + escape(this.in_name); return "in_mail=" + escape(this.in_mail); return "in_start=" + escape(this.in_start); ・ ・ ・ } LV.in_name = t1; LV.in_mail = t2; LV.in_start = inst; ・ ・ ・ とやっても駄目ですよね。 どうやら全く理解していない私のようです。 ![]() |
KURAGE | Åê¹ÆNo.31832 投稿日時: 2007-2-8 14:05 |
常連 ![]() ![]() 居住地: 東京都 投稿: 199
|
Re: FLASHAのURLエンコーディングについて こんにちは
![]() 送信したい値を & で繋いでやればOKです。
|
Setojin | Åê¹ÆNo.31840 投稿日時: 2007-2-8 18:47 |
新米 ![]() ![]() 居住地: 投稿: 5
使用環境:
Win98SE,FLASH MX |
Re: FLASHAのURLエンコーディングについて KURAGE様、返信ありがとうございます。
おかげさまで、CGIがきちんと正常反応してくれました。 具体的な書き方まで丁寧なご説明、心より感謝しております。 まだまだ途上の自分ゆえ、また分からないことがあった時はお教え願えれば幸いです。 本当にありがとうございました。 m(_"_)m ペコペコ |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |