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");

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:2007/05/25 20:26:03
  • 終了:2007/05/25 22:40:37

ベストアンサー

id:jack_sonic No.1

じゃっくそにっく回答回数123ベストアンサー獲得回数252007/05/25 22:07:17

ポイント60pt

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

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

  • LoadVarsの組み込み関数、send/sendAndLoad()関数では、

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

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

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

toString()メソッド

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

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

  • 詳しくはこのWikiページにまとめます。

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


  • 一部GET用の関数だけ載せます。

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);
id:P-mako

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

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

2007/05/25 22:40:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません