Jquery的序列化方法为什么要把空格替换成加号呢?

hansonboy 2011-03-18 10:14:23

param: function( a ) {
var s = [ ];

function add( key, value ){
s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
};

// If an array was passed in, assume that it is an array
// of form elements
if ( jQuery.isArray(a) || a.jquery )
// Serialize the form elements
jQuery.each( a, function(){
add( this.name, this.value );
});

// Otherwise, assume that it's an object of key/value pairs
else
// Serialize the key/values
for ( var j in a )
// If the value is an array then the key names need to be repeated
if ( jQuery.isArray(a[j]) )
jQuery.each( a[j], function(){
add( j, this );
});
else
add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );

// Return the resulting serialization
return s.join("&").replace(/%20/g, "+");
}



为什么要替换下呢,为什么要替换成加号呢?return s.join("&").replace(/%20/g, "+");



如果用户在输入框中输入了空格的字符串;我用JQuery的序列化方法得到URL串然后提交的方式,就会造成后台数据的不正确,不知道有没有好的办法?
...全文
343 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝色_冰点 2011-03-23
  • 打赏
  • 举报
回复
把空格换成 + 号,不是因为JSON的原因
而是因为要把JSON的内容上传到服务器,上传的内容要经过一些编码转换
比如 = & 符号等这些特殊符号是一定要经过转换的,而空格在上传的时候,就要转换成 + 才会被服务器正确识别。而 + 号本身,自然就要转成另一种形式了
hansonboy 2011-03-23
  • 打赏
  • 举报
回复
我现在是直接把这句转换的去掉, 暂时没发现有什么问题?不知这句主要作用是什么?写得出来肯定是有它的用处的,去掉后会有什么问题?
蓝色_冰点 2011-03-23
  • 打赏
  • 举报
回复
如果你不想把整个JSON的内容上传到服务器,就不用去转换空格

转换空格的目的,是上传给服务器识别的
hansonboy 2011-03-23
  • 打赏
  • 举报
回复
意思是说这个转换是为了JSON的?如果不用JSON可以不转换吧?
KK3K2005 2011-03-19
  • 打赏
  • 举报
回复
也在困扰这个问题 前后台转换都有这个问题
挂着 看有没有 简洁的处理办法
showenxxx 2011-03-19
  • 打赏
  • 举报
回复
json2.js
在json object和json string之间转换
kaifadi 2011-03-18
  • 打赏
  • 举报
回复
return s.join("&").replace(/%20/g, "+");不用+替换,改用空行不行?

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧