使用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 相关文章推荐
一个加载js文件的小脚本
Jun 28 Javascript
js 剪切板应用clipboardData详细解析
Dec 17 Javascript
js选择并转移导航菜单示例代码
Aug 19 Javascript
jQuery基础语法实例入门
Dec 23 Javascript
原生javascript实现匀速运动动画效果
Feb 26 Javascript
jquery获取复选框的值的简单实例
May 26 Javascript
jquery css实现邮箱自动补全
Nov 14 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
Dec 31 Javascript
详解angular部署到iis出现404解决方案
Aug 14 Javascript
jQuery实现每日秒杀商品倒计时功能
Sep 06 jQuery
vue video和vue-video-player实现视频铺满教程
Oct 30 Javascript
vue 通过base64实现图片下载功能
Dec 19 Vue.js
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
PHP脚本的10个技巧(1)
2006/10/09 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
Python实现模拟登录及表单提交的方法
2015/07/25 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
经典C++面试题一
2016/11/06 面试题
销售找工作求职信
2013/12/20 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
监督检查工作方案
2014/05/28 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
小学课外阅读总结
2014/07/09 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js