使用Post提交时须将空格转换成加号的解释


Posted in Javascript onJanuary 14, 2013

jQuery的serialize模块中有个r20正则

var r20 = /%20/g,

jQuery.param方法中会将所有的"%20"转成"+",即提交数据前,数据中如果包含空格,那经过encodeURIComponent后,空格会转成"%20"
encodeURIComponent(' ') === '%20'; // true

最后需要将"%20"转换成"="再Post提交。这样后台程序接受到的才是真正的空格。

关于 encodeURIComponent,见MDC描述

encodeURIComponent escapes all characters except the following: alphabetic, decimal digits, - _ . ! ~ * ' ( )

To avoid unexpected requests to the server, you should call encodeURIComponent on any user-entered parameters that will be passed as part of a URI. For example, a user could type "Thyme &time=again" for a variable comment. Not using encodeURIComponent on this variable will give comment=Thyme%20&time=again. Note that the ampersand and the equal sign mark a new key and value pair. So instead of having a POST comment key equal to "Thyme &time=again", you have two POST keys, one equal to "Thyme " and another (time) equal to again.

For application/x-www-form-urlencoded (POST), per http://www.w3.org/TR/html401/interac...m-content-type, spaces are to be replaced by '+', so one may wish to follow a encodeURIComponent replacement with an additional replacement of "%20" with "+".

相关
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent
http://www.w3.org/TR/html401/interact/forms.html#form-content-type

Javascript 相关文章推荐
fromCharCode和charCodeAt 方法
Dec 27 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
jquery DIV撑大让滚动条滚到最底部代码
Jun 06 Javascript
子窗体与父窗体传值示例js代码
Aug 01 Javascript
jQuery中的一些常见方法小结(推荐)
Jun 13 Javascript
Web打印解决方案之证件套打的实现思路
Aug 29 Javascript
微信小程序 地图map实例详解
Jun 07 Javascript
利用ES6实现单例模式及其应用详解
Dec 09 Javascript
Vue 创建组件的两种方法小结(必看)
Feb 23 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
May 10 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
Oct 14 Javascript
JavaScript实现打字游戏
Feb 19 Javascript
javascript函数以及基础写法100多条实用整理
Jan 13 #Javascript
window.requestAnimationFrame是什么意思,怎么用
Jan 13 #Javascript
jquery获取div宽度的实现思路与代码
Jan 13 #Javascript
jQuery实现用方向键控制层的上下左右移动
Jan 13 #Javascript
js模仿html5 placeholder适应于不支持的浏览器
Jan 13 #Javascript
ie6下png图片背景不透明的解决办法使用js实现
Jan 11 #Javascript
关于全局变量和局部变量的那些事
Jan 11 #Javascript
You might like
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
PHP目录操作实例总结
2016/09/27 PHP
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
python中enumerate的用法实例解析
2014/08/18 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
tornado+celery的简单使用详解
2019/12/21 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
初中生个人学习的自我评价
2013/12/04 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
策划创业计划书
2014/02/06 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
学生评语大全
2014/04/18 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
团代会邀请函
2015/02/02 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书
python中__slots__节约内存的具体做法
2021/07/04 Python
Redis Cluster集群动态扩容的实现
2021/07/15 Redis
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis