方案一:
$.ajax({
url: \'/ashx/ajax.ashx\',
type: \'post\',
data: \'option=delete&name=11&adb, success: function (data) { if (data != \'error \') { } } }); \'
上面执行的ajax就是异步删除一个name为 11&abd 的数据 当请求到ajax.ashx页面时,我们获取到的name参数为11 执行操作后会发现其实删除了name 为 11的数据,而没有删除 name 为 11&abc 的数据 这是由于有&特殊字符,把以前的俩个参数变成了三个参数 option,name,abc 这时就需要用另外一种方法传递参数:
$.ajax({
url: \'/ashx/ajax.ashx\',
type: \'post\',
data: {
\'option\': \'delete\',
\'name\': \'11&adb\'
},
success: function(data) {
if (data != \'error\') {}
}
});
采用上面的json格式传递参数就可以避免特殊字符引起的参数错误问题.
方案二: 统一编码UTF-8.
1.JSP页面:
<%@ page language=\"java\" 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);
Http.open(\"POST\", url, true);
Http. = doMemo;
Http.send(null);
3.服务器端接收传递的数据 比如:一个servlet的doGet方法中: request.setCharacterEncoding("gb2312"); response.setContentType("text/ ;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);
继续阅读与本文标签相同的文章
上一篇 :
HTTP/3的过去、现在和未来
下一篇 :
jquery+ajax获取特殊字符
-
健乐教学机器人可开展的教学实训内容
2026-05-14栏目: 教程
-
5G套餐曝光遭“吐槽”,iphone11受追捧,导致苹果11销量比较高
2026-05-14栏目: 教程
-
为什么修电脑的叫自己不要杀毒和清理垃圾?
2026-05-14栏目: 教程
-
当水乡建筑遇上机器人,成就乌镇又一网红景点
2026-05-14栏目: 教程
-
惊险!手刹失灵,郴州一货车开启“无人驾驶”模式……
2026-05-14栏目: 教程
