使用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 相关文章推荐
Kibo 用于处理键盘事件的Javascript工具库
Oct 28 Javascript
JavaScript面向对象之Prototypes和继承
Jul 12 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
Nov 18 Javascript
js中定义一个变量并判断其是否为空的方法
May 13 Javascript
Bootstrap菜单按钮及导航实例解析
Sep 09 Javascript
jQuery双向列表选择器select版
Nov 01 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
Jan 11 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
Apr 14 Javascript
js实现添加删除表格(两种方法)
Apr 27 Javascript
vue中element组件样式修改无效的解决方法
Feb 03 Javascript
Node.js 如何利用异步提升任务处理速度
Jan 07 Javascript
javascript实现图片轮换动作方法
Aug 07 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
PHP insert语法详解
2008/06/07 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
php支付宝APP支付功能
2020/07/29 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
2015/08/17 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
python的launcher用法知识点总结
2020/08/07 Python
python 通过exifread读取照片信息
2020/12/24 Python
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
小学体育组工作总结
2015/08/13 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL