使用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 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
jquery HotKeys轻松搞定键盘事件代码
Aug 30 Javascript
jquery sortable的拖动方法示例详解
Jan 16 Javascript
javascript解三阶幻方(九宫格)
Apr 22 Javascript
JQueryEasyUI之DataGrid数据显示
Nov 23 Javascript
jQuery Password Validation密码验证
Dec 30 Javascript
JavaScript实现时钟滴答声效果
Jan 29 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 Javascript
学习jQuery中的noConflict()用法
Sep 28 jQuery
Angular7中创建组件/自定义指令/管道的方法实例详解
Apr 02 Javascript
JS定义函数的几种常用方法小结
May 23 Javascript
vue整合百度地图显示指定地点信息
Apr 06 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上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
比较详细PHP生成静态页面教程
2012/01/10 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
Python入门篇之列表和元组
2014/10/17 Python
python实现简单登陆流程的方法
2018/04/22 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Python中format()格式输出全解
2019/04/12 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
巾帼志愿者活动方案
2014/08/17 职场文书
安全标兵事迹材料
2014/08/17 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
亮剑精神观后感
2015/06/05 职场文书
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL