解决JS提交url中存在中文的问题

在项目中经常回存在通过JS去请求操作的事件发生,而这些请求的url链接又通常会使用到中文,

而这些中文在JS中可以正常alert出来,但是提交给后台时就显示成乱码了。

这里提供一个解决方案,基本原理就是在JS中将中文转码成URI方式,如下:





var queryTitle = document.getElementByIdx_x_x('queryTitle').value;
queryTitle=encodeURI(queryTitle);
queryTitle=encodeURI(queryTitle); //据说需要转2次



然后在后台获取的时候,解码URI:



String newTitle = request.getParameter("newTitle");
newTitle = java.net.URLDecoder.decode(newTitle, "utf-8");



这样就可以了



js:

function getDoctorMobile(currentElement,nextElement){
var selected=currentElement.options[currentElement.selectedIndex].value;
selected=encodeURI(selected);
selected=encodeURI(selected);
if(selected != ''){
jQuery.getJSON("${root}/admin/ajax/sys/area.do?action=GetDoctorMobile&doctorName="+selected,
function(items){
var output = [];
jQuery.each(items, function(i,item){
output.push('<option value="'+ item.mobile +'">'+ item.mobile +'</option>');
});
$('#'+nextElement).html(output.join(''));
$('#'+nextElement).css('display','');
});

}
}

java:

public String doGetDoctorMobile(Map<String, Object> context, CGI cgi) throws UnsupportedEncodingException {

String name = cgi.getString("doctorName");
name = java.net.URLDecoder.decode(name, "utf-8");

Long hospitalId = (Long) cgi.getSession().getAttribute("hospitalId");
if(hospitalId != null && StringUtils.isNotBlank(name)){

UserInfo info = new UserInfo();
info.setMedicalAgencyId(hospitalId);
info.setDoctorName(name);
Query<UserInfo> query = new Query<UserInfo>();
query.setQueryObject(info);
List<UserInfo> users = userService.queryDoctor(query);
writeJsonResponse(users, cgi);
}
return null;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值