ajax特殊字符转码,Ajax系列:参数传递到服务端时含有特殊字符的参数解决

今天在做门户密码验证的时候遇到特殊字符后台却莫名奇妙的报错如下:

E SRVE0026E: [Servlet

错误]-[]:java.lang.IllegalArgumentException

参数转换错误,我想应该是传参过程中有特殊字符,下面是从网上搜的一篇关于ajax中传参过程中遇见特殊字符怎么办,很受用,按照下面的方法错误就解决了,呵呵。

Ajax参数传递到服务端时含有特殊字符的参数解决。这类特殊字符包括:%、\。现象:有时一部分参数值传过去了,或者后台直接报错:转码失败!

例如:

统一编码UTF-8.

1.JSP页面:

pageEncoding="UTF-8"%>

2.Ajax.js页面:传递参数时,可能出现特殊字符的参数用escape(encodeURIComponent())两函数进行转码,传递到后台!

var url =

"/ZX/servlet/AddMemoServlet?memo=" + memoCode +

"&otherMemo=" + escape

(encodeURIComponent(otherMemo)) +

"&applNo=" +

applNo.innerText.substr(0,16); //alert("url="+url);

xmlHttp.open("POST",

url, true);

xmlHttp.onreadystatechange

= doMemo;

xmlHttp.send(null);

3.服务器端接收传递的数据 比如:一个servlet的doGet方法中:

request.setCharacterEncoding("gb2312");

response.setContentType("text/xml;charset=utf-8");

response.setHeader("Cache-Control",

"no-cache");

......

//以下解决Ajax中url传递的参数值中包含特殊字符,后端解析出错的问题:以utf-8以方式解码

java.net.URLDecoder urlDecoder=new

java.net.URLDecoder();

String otherMemo

=

urlDecoder.decode(request.getParameter("otherMemo"),"utf-8");

logger.info("otherMemo:"

+ otherMemo);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值