extjs url 中文参数乱码问题!!! - Web 开发 / Ajax
小弟初次接触Extjs有一问题,Google很久没有解决,请各位高手,支招!谢谢诶。。。
所有页面以及Struts2的属性编码均为Utf-8..... 如果用params属性传参(已被注释掉)就会报错,无法显示。。。
采用URL传参,进入Action打印出来的属性均为乱码。
代码如下:
function onSave() {
if(infoForm.getForm().isValid()) {
var param = infoForm.getForm().getValues(false);
//alert(param.roleDesc);
infoForm.getForm().submit({
url:'./json/role_add.action?role.roleid='
+param.id+'&role.roleName='
+param.name+'&role.roleDesc='+param.desc,
method : 'post',
// params: {
// role.roleid:param.id,
// role.roleName:param.name,
// role.roleDesc:param.desc
// },
waitMsg:'正在提交信息...'
//success: onRegSuccess,
//failure: onFailure
});
}else {
Ext.Msg.alert('错误','信息','请信息填写完成在提交!');
}
}
------解决方案--------------------
CSS code
js、Ajax传参乱码,可以用encodeURI(encodeURI(url))进行2次转码。
然后在服务器端:用URLEncoder.encode(request.getParmenter("url"),"UTF-8");
这样就可以解决乱码了
------解决方案--------------------
CSS code
'./json/role_add.action?role.roleid='
+encodeURI(encodeURI(param.id))+'&role.roleName='
+encodeURI(encodeURI(param.name))+'&role.roleDesc='
+encodeURI(encodeURI(param.desc)),
这里可以只用一次就可以了
encodeURI(encodeURI('./json/role_add.action?role.roleid='+param.id+'&role.roleName='
+ param.name));
我记得我用Ext传参数的时候没有用这个转换,也不需要转换的。不知道你的为什么会乱码
ext也有自带的转码、解码方法
Ext.encode()这个方法可以穿一个js的对象,它会自动转换成&name=name的形式
非常好用。
Ext.decode()