【问题解决】前台AJAX请求向Java后台传时+号变为空格—其他特殊字符解析出错也可参考解决...

本文探讨了在Web应用中从前台向后台传输包含+号的数据时遇到的问题,并提供了四种有效的解决方案,包括使用特殊字符替代、JavaScript内置函数等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明出处http://blog.youkuaiyun.com/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.youkuaiyun.com/qq_26525215

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值