使用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 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
Jun 27 Javascript
javascript实现完美拖拽效果
May 06 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
Sep 10 Javascript
谈一谈bootstrap响应式布局
May 23 Javascript
使用Script元素发送JSONP请求的方法
Jun 12 Javascript
JavaScript中数组Array.sort()排序方法详解
Mar 01 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
Oct 17 Javascript
使用RN Animated做一个“添加购物车”动画的方法
Sep 12 Javascript
layui禁用侧边导航栏点击事件的解决方法
Sep 25 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
Apr 11 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
Aug 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 无线电
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
php中的mongodb select常用操作代码示例
2014/09/06 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
php实用代码片段整理
2016/11/12 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
js实现动态时钟
2020/03/12 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
最基础的Python的socket编程入门教程
2015/04/23 Python
详解python之heapq模块及排序操作
2019/04/04 Python
python实现弹跳小球
2019/05/13 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
高校自主招生自荐信
2013/12/09 职场文书
自我推荐信范文
2014/05/09 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
单位工作证明
2014/10/07 职场文书
校长个人总结
2015/03/03 职场文书