1. 程式人生 > >在extjs的textfield中輸入帶有特殊字元的字串,比如/opt/apache-storm-0.9.4/bin/storm ui &但是&符號卻無法傳遞到後臺

在extjs的textfield中輸入帶有特殊字元的字串,比如/opt/apache-storm-0.9.4/bin/storm ui &但是&符號卻無法傳遞到後臺

在ext中

{                               
                                    xtype:'textfield',
                                    hideLabel:true,
                                    width:'270',
                                    id:'storm_UI',
                                    name:'storm_UI',
                                    value:storm_UI
                                },

var storm_UI = Ext.getCmp('storm_UI').getValue();

url:'machine!updateMachine.action?machine.storm_UI='+escape(storm_UI),

經過escape()編碼後在textfile中輸入的字串/opt/apache-storm-0.9.4/bin/storm ui &就能完整的傳遞到後臺了

--------------------------------------------------------------------------------------------------

在extjs中,使用Ext.Ajax.request({
url:'addToMyScheduleExe.action?testSetId='+node.id+'&scheduleName='+scheduleName,
....});
如果使用這中方法進行傳參,產生是不會經過編碼處理的。也就是說,其中包含的特殊字元不會自動得到編譯。所以是無法直接傳遞特殊字元的。如果想用這個方法傳遞,之前需要對所傳引數進行以前編碼。
在extjs中可以不做編碼就可以傳。哈哈,以以下方式:Ext.Ajax.request({
url:'addToMyScheduleExe.action‘,
params:{testSetId:node.id,scheduleName:scheduleName},
....});

--------------------------------------------------------------------------------------------------

下面具體介紹JS中這兩種函式的使用

1.escape方法

對String物件編碼以便它們能在所有計算機上可讀,   
escape(charString) 
必選項charstring引數是要編碼的任意String物件或文字。   

說明 

escape方法返回一個包含了charstring內容的字串值(Unicode格式)。所有空格、標點、重音符號以及其他非ASCII字元都用%xx編碼代替,其中xx等於表示該字元的十六進位制數。例如,空格返回的是"%20
"。

  字元值大於   255   的以   %uxxxx   格式儲存。 注意 :escape   方法不能夠用來對統一資源標示碼
  (URI)   進行編碼。對其編碼應使用 encodeURI 和 
encodeURIComponent  方法。

2.unescape   方法

解碼用escape()方法編碼的string物件 
unescape(charstring)   
必選項charstring引數是要解碼的String物件。   
說明 

unescape方法返回一個包含charstring內容的字串值。所有以%xx十六進位制形式編碼的字元都用ASCII字符集中等價的字元代替。

     以   %uxxxx   格式(Unicode   字元)編碼的字元用十六進位制編碼   xxxx   的   Unicode   字元代替.   

 注意  : unescape 方法不能用於解碼統一資源標識碼
  (URI)。解該碼可使用 decodeURI 和
decodeURIComponent 方法