日期:2014-05-16  浏览次数:20722 次

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()