在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
"。
(URI) 進行編碼。對其編碼應使用 encodeURI 和 encodeURIComponent 方法。
2.unescape 方法
解碼用escape()方法編碼的string物件
unescape(charstring)
必選項charstring引數是要解碼的String物件。
說明
unescape方法返回一個包含charstring內容的字串值。所有以%xx十六進位制形式編碼的字元都用ASCII字符集中等價的字元代替。
以 %uxxxx 格式(Unicode 字元)編碼的字元用十六進位制編碼 xxxx 的 Unicode 字元代替.
注意 : unescape 方法不能用於解碼統一資源標識碼
(URI)。解該碼可使用 decodeURI 和 decodeURIComponent 方法