URLエンコードをしないでGET/POST 送信するテクニック

LoadVars?オブジェクトのsend/sendAndLoad?メソッドでは、
2バイト文字が強制的にURLエンコードされてしまいます。

しかし、送信メソッド内部で更に呼び出されるURLエンコード用のメソッド
LoadVars?.toString()メソッドをオーバーライド(上書き)
することで、URLエンコードしないで送信することができます。

すべて開くすべて閉じる
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
-
|
|
|
|
|
!
-
-
!
-
|
!
-
!
-
!
-
!
!
-
|
|
!
-
|
|
|
|
|
!
 
-
|
!
 
 
 
////////////////////////////////////////////////
/////////////////////////////////////////////////
//  LoadVars.sendNoEnc()
LoadVars.prototype.sendNoEnc  = function( url, target, method) 
{
        LoadVars.prototype._toString = LoadVars.prototype.toString;
            LoadVars.prototype.toString = function() {return unescape(this._toString());};
        ASSetPropFlags(LoadVars.prototype, "_toString", 3);
        this.send(url, target, method);
        LoadVars.prototype.toString = LoadVars.prototype._toString;
};ASSetPropFlags(LoadVars.prototype, "sendNoEnc", 3);
/////////////////////////////////////////////////
//  LoadVars.sendAndLoadNoEnc()
LoadVars.prototype.sendAndLoadNoEnc = function(url, res, method) 
{
    LoadVars.prototype._toString = LoadVars.prototype.toString; 
    LoadVars.prototype.toString = function() { return unescape(this._toString()); };  
    ASSetPropFlags(LoadVars.prototype, "_toString", 3); 
    this.sendAndLoad(url, res,  method); 
    LoadVars.prototype.toString = LoadVars.prototype._toString;
};ASSetPropFlags(LoadVars.prototype, "sendAndLoadNoEnc", 3);
 
/////////////////////////////////////////////////////
sendData = new LoadVars();
sendData.data1 = ;
sendData.data2 = "abcdef";
sendData.sendNoEnc("test.php", "_self", "GET");