JS编码问题

今天遇到了编码问题。搞了一下午。终于找到了问题的关键。

问题1

post请求是默认contentType是发送数据到服务器时所使用的内容类型。默认是:"application/x-www-form-urlencoded"
而我程序中设置的是"application/json"。而在@webservlet中并不能通过方法参数直接取到参数
必须设置为"application/x-www-form-urlencoded"
如果设置为"application/json",会报方法空指针错误

问题2

"application/x-www-form-urlencoded"。下。post的参数必须进行UTF-8编码。不然后台servlet会得不到参数数据。

例:

js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$.ajax({
url: "../mainService/setCategoryInfo",
type: "POST",
dataType: 'json',
data: {
divid: encodeURI(_vHome.selectedDiv, "UTF-8"),
divname: encodeURI(divname ? divname : '',"UTF-8"),
categorycd: iHome.selectCategorycd,
categoryname: encodeURI(_vHome.classifyHomeInfo,"UTF-8"),
delData: encodeURI(delData,"UTF-8"),
usercd: initVar.usercd,
},
success: function (data) {
}
});

java

1
2
3
4
5
6
7
public DataSet setCategoryInfo(String divid, String divname,String categorycd, String categoryname,String delData, Integer usercd ) throws Exception {

divname = URLDecoder.decode(divname, "UTF-8");
categoryname = URLDecoder.decode(categoryname, "UTF-8");
delData = URLDecoder.decode(delData, "UTF-8");

}