2013年3月27日星期三
今天又涉及到前后台传递数据用ajax或form提交表单两种方式问题;ajax用于局部刷新页面更新数据;传递参数时用通过URL进行;并且参数中若含有中文则应该通过encodeURIComponent或encodeURI进行转码否则会出现乱码;今天一开始通过encodeURI转码并且还把函数写在后台了,调试很久还总是乱码,后来发现问题;但函数执行后还是乱码;上网搜索说要两次转码后再解码,尝试还是不行;
在网上搜到解决办法,但是不明白。解决办法如下:
对需要传递的中文参数先进行两次转码:
1.js文件中使用encodeURI()方法。
var url = "Validate.jsp?id=" +encodeURI(encodeURI(idField.value));
2.在后台中对传递的参数进行URLDecoder解码
String username = URLDecoder.decode(request.getParameter("id"),"UTF-8");
后来直接用encodeURIComponent转码;在后台不用解码一样可以取得正确结果,解码后也正确,后台能自动识别,目前还没深层次研究原因。
今天才发现hibernate在映射组合主键表时要重新生成一个类,感觉这种方法真麻烦;当初在设计表结构时不该考虑用组合主键。