※ 商品リンクから購入されると少額の報酬が発生することがあります。
getURLとは
ActionScriptからサーバサイドへリクエストを投げて、レスポンスはブラウザで受け取る仕組み。
getURL(url:String, target:String, method:String)
url:呼び出すURL。相対パスはOSとブラウザの組み合わせによって起点が変わる。。。
target:ブラウザのターゲット。_self, _top, _blank等HTMLと同じように指定
method:GET,POSTから選択。指定をしないと自動的に選択される。
あり得ない実装や、あり得ないブラウザによる違いが。。。
配列をPOSTで渡すと、リクエストにあり得ない文字列が入ってくる!
本来はPOSTヘッダにカンマ区切りで値が入るはずだが、ActionScriptはカンマ区切りした値をPOSTヘッダに詰めている模様。ヘッダ上ではカンマはエンコードされてしまってヘッダから取り出される値は配列ではなくてカンマ区切りの文字列になってしまう。
へたれ実装が直っても問題がないように、ActionScriptで配列を無理矢理カンマ区切り文字列にし、サーバサイドではActionFormのセッターで配列の長さが1な場合はカンマでsplit。もともとカンマの含まれる値には使用できないが、とりあえずは強制対処。
※GETを使用には問題ない。getURL("www.example.com?hoge=a&hoge=b", "_blank","GET");はうまくいくのだ。
IEでPOSTデータが送信されない!
getURLで送られるデータは、気持ち悪いことにActionScriptで定義してある変数全てが対象(たぶん同じスコープが対象だとは思うけど、mx.cor e.Applicationを継承したクラスを作ってgetURLさせてもうまくいかなかった)。
var hogehoge; function test() { hogehoge = "fugafuga"; getURL("www.example.com", "_blank", "POST"); }こんな感じにするとhogehogeという名前でfugafugaという値はサーバに送信される。
が、IEで上記コードを実行すると名前も値も送信されない。まぁ、サンプルを見ても上記のようには書いていないのは書いていないのだが、あまりにひどい。ブラウザによって違いがあるってどういうことさ、Macromedia!。HTMLとかわんないじゃん。
ただしくはこう書く。
var hogehoge:String; function test() { hogehoge = "fugafuga"; getURL("www.example.com", "_blank", "POST"); }めでたしめでたし(flash嫌い)。