加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【问题解决】前台AJAX请求向Java后台传时+号变为空格—其他特殊

发布时间:2020-12-16 03:33:19 所属栏目:百科 来源:网络整理
导读:转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自 【大学之旅_谙忆的博客】 问题是这样的,在前台输入:+++ 3个加号,然后提交到后台,在前台页面显示是没有问题的 在后台用req.getParameter(“comment”);获得内容,结果为3个空格,也就是无法

转载请注明出处:http://blog.csdn.net/qq_26525215

本文源自【大学之旅_谙忆的博客】

问题是这样的,在前台输入:+++ 3个加号,然后提交到后台,在前台页面显示是没有问题的

在后台用req.getParameter(“comment”);获得内容,结果为3个空格,也就是无法获得+号,怎么解决呢。

第一种解决方案:
我们可以在前台获得字符串的时候,将”+”号转换为”%2B”.

comment=comment.replace(/+/g,"%2B");// 为转义

我自己实践了一些,发现此方法可以!挺好的一种方法

第二种解决方案:
在我们服务器端执行的,也就是我们自己将空格转换为+号,但是,思考一下,就会发现此方法也不行,因为会将空格与+号混淆。

第三种解决方案:
也就是自己构建特殊字符,来写一个简单的传输协议,代替+号,
例如我们在前台的时候,如果有人输入+号,我们就把它转换为: “*jiahao;”,这个字符串可以自己定义,然后我们后台再解析成对应的+号。
前台JS:

comment=comment.replace(/+/g,"*jiahao;");// 为转义

Java后台解析回去:

message = message.replace("*jiahao;","+");
//注意,这里如果用replaceAll,要注意正则表达式中的特殊字符转义!

此种方法可行,但是麻烦啊,还得自己转来转去的。

第四种解决方案:
前台JS使用encodeURIComponent函数。

comment=window.encodeURIComponent(comment);

其实这个函数也就是将+替换成了%2B
所以,如果遇到特殊符号了,用这个函数就可以了!

还有,encodeURI()这个函数解决不了+号这个特殊字符的传参变成空格的问题!
网上还有的教程地方把%2B写成了2b%,真的是让人挺无语了。

本文章由[谙忆]编写, 所有权利保留。
欢迎转载,分享是进步的源泉。

转载请注明出处:http://blog.csdn.net/qq_26525215

本文源自【大学之旅_谙忆的博客】

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读