今天遇到了编码问题。搞了一下午。终于找到了问题的关键。
问题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"); }
|