$.ajax({
url : './data.do?action=unregister',
dataType : 'json',
contentType : "application/x-www-form-urlencoded; charset=UTF-8",
timeout : 300000,
data : {
serviceNames : serviceNames
},
success : function(data) {
jAlert('成功注销服务!', 'message');
oTable.fnDraw();
},
error : function(request, status, error) {
BRICK.ajaxError(request, status, error);
}
})
上面代码,用get,设置了编码为UTF-8,依然乱码。
$.ajax({
url : './data.do?action=unregister',
type : "post",
dataType : 'json',
timeout : 300000,
data : {
serviceNames : serviceNames
},
success : function(data) {
jAlert('成功注销服务!', 'message');
oTable.fnDraw();
},
error : function(request, status, error) {
BRICK.ajaxError(request, status, error);
}
})
上面代码,用post,默认使用UTF-8,没有乱码。
请求方法一为何不行?
问题补充:
redstarofsleep 写道
get是直接在url后面传的,要转码成“%FG%44。。。。”这种形式的。然后后台取到后再转回来。
Java里面是:Decoder.decode();Encoder.encode();
确实是URL的问题。
改正后如下(只贴出改正部分)
serviceNames : encodeURI(serviceNames)
String serviceNames = request.getParameter("serviceNames");
serviceNames = java.net.URLDecoder.decode(serviceNames, "UTF-8");