Ajax传参之url中特殊字符的处理之血站八方

笔者,先贴出这个错误在Java后台中所报出的异常


八月 01,2013 5:08:46 下午 org.apache.tomcat.util.http.Parameters processParameters
信息: Character decoding Failed. Parameter [entityDoc.abstrat] with value [my name is 7is%207%%20and%206%7] has been ignored. Note that the name and value quoted here may be corrupted due to the Failed decoding. Use debug level logging to see the original,non-corrupted values.
org.apache.tomcat.util.buf.UDecoder$DecodeException: isHexDigit



为什么会报这个异常,是因为笔者,在前台的Ajax的参数里面使用了一些url不转码的特殊字符%,因为事先没有做过处理,所以传到后台的时就变成了,前台传入
my name is 7% and 6%7


异常中显示
[my name is 7is%207%%20and%206%7]

注意,笔者先对其中的八个比较特殊不编码的字符列出
url特殊符号 在url中实际含义 转码后的十六进制表示
+ +号表示空格 %2B
空格 用+号或者编码 %20
/ 分隔目录和子目录 %2F
? 分隔实际的 URL 和参数 %3F
% 指定特殊字符 %25
# 表示书签 %23
& 参数间的分隔符 %
= URL 中指定参数的值 %3D


在此,对URL的编码详细的总结一下


知道问题的原因后,解决起来就有思路了!可以使用2种方法,第一种使用正则把%号,替换成%25,手动指定一个特殊符号转码

var t= title.replace(/%/g,"%25");//g代表全局匹配替换

第二种方法,比较通用直接使用JavaScript提供的2次编码方案进行转码可以替换掉所有的的不能转码的特殊符号
                title=  encodeURI(title);
                title=  enc odeURI(title);
    



至此,完美解决url中的特殊符号的问题!

相关文章

JS原生Ajax操作(XMLHttpRequest) GET请求 POST请求 兼容性问题 利用iframe模拟ajax 实现表单提交的返回...
AJAX 每日更新前端基础,如果觉得不错,点个star吧 😃 https://github.com/WindrunnerMax/E...
踩坑Axios提交form表单几种格式 前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSe...
很早就听闻ajax的名声,但是却一直不知道怎么用,今天自己捣鼓了一下,竟然会用了,哈哈哈哈。 为了防止...
需要在服务器上进行哈 jquery的ajax方法: // jquery请求 $.ajax({ url: "./server/slider.js...
Ajax函数封装ajax.js // Get / Post // 参数 get post // 是否异步 // 如何处理响应数据 // URL // var...