人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

FLASHのLoadVarsオブジェクトでsendメソッドをコールするときに、GETパラメータ(2バイトコード)をURLエンコードしないようにするプロパティはありませんか?
var my_lv:LoadVars = new LoadVars();
my_lv.name1 = name1_txt.text;
my_lv.send("test4.cgi", "_top", "GET");


●質問者: P-mako
●カテゴリ:インターネット ウェブ制作
✍キーワード:CGI Flash URL エンコード オブジェクト
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● じゃっくそにっく
●60ポイント ベストアンサー

プロパティという形では存在しませんが、

URLエンコードしないようにできる方法があります。

変数が強制的にURLエンコードされます。

しかし、その送信メソッド内部で

URLエンコードするために内部的に呼び出されるメソッド

toString()メソッド

を、URLエンコードしないように一時的に上書き(オーバーライド)することで、

URLエンコードしない送信メソッドを作ることができます。

Flash/ActionScript/URLエンコードしないでGET,POST送信するテクニック - ジャックズラボ jack's Lab


URLエンコードしないで送信する関数の実装はこんな感じです

/////////////////////////////////////////////////
// URLエンコードしないsendメソッド
// LoadVars.sendNoEnc()
LoadVars.prototype.sendNoEnc = function( url, target, method) 
{
 // 正規toStringを退避
 LoadVars.prototype._toString = LoadVars.prototype.toString;
 // toStringメソッドを上書きする
 // unescapeをかませる
 LoadVars.prototype.toString = function() {return unescape(this._toString());};
 // _toStringに権限設定 3 : CanDelete=Yes, IsHiden=Yes
 ASSetPropFlags(LoadVars.prototype, "_toString", 3);
 // send実行
 this.send(url, target, method);
 // 退避した正規toStringを戻す
 LoadVars.prototype.toString = LoadVars.prototype._toString;
};ASSetPropFlags(LoadVars.prototype, "sendNoEnc", 3);
◎質問者からの返答

ありがとうございます。すばらしいです!

ちゃんとオーバーライドもできるんですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ