将jquery序列化转成对象的编码坑

主要的两个坑:

  1.  jquery的 serialize()时会将空格转义成+,字符转成对象时把+号转成空格

    例如:

<input type="text" value="12 34+56" />

    那么在执行 serialize()方法后,得到的却是  12+34%2B56  这样的字符串;
    即jquery的序列化方法对空格进行了转义,转换成了 + 号,“+”号转义的是 %2B

  2. 一直以为序列化字符串中key编码没啥用,key一定要编码,若key不编码如下情况会出现问题

    

<input type="text" name="goodsList[0].storeNum"   />

最终将jquery序列化字符串转成对象的方法如下

 1 serializeObj: function(paramStrs){
 2             if(!paramStrs){
 3                 return {};
 4             }
 5
 6        // jquery序列化传入的字符串,将+号转成空格
 7             paramStrs = paramStrs.replace(/\+/gi, ‘ ‘);
 8
 9             var arr = paramStrs.split(‘&‘),
10                 returnObj = {},
11                 name = ‘‘,
12                 value = ‘‘,
13                 temp = null;
14             for(var i=0; i< arr.length; i++){
15                 temp = arr[i].split(‘=‘);
16                 name = decodeURIComponent(temp[0]);
17                 value = decodeURIComponent(temp[1]);
18
19                 if(!returnObj.hasOwnProperty(name)){
20                     returnObj[name] = value;
21                 }else{
22                     if($.isArray(returnObj[name])){
23                         returnObj[name].push(value);
24                     }else{
25                         var tempArr = [returnObj[name]];
26                         tempArr.push(value);
27                         returnObj[name] = tempArr;
28                     }
29                 }
30             }
31
32             return returnObj;
33         }
时间: 2024-10-05 11:15:28

将jquery序列化转成对象的编码坑的相关文章

Jquery 将表单序列化为Json对象

使用下面代码时注意不要忘记引入jquery文件,以下代码可以复制到html文件中执行可看到效果,非常方便好用.附代码: <!DOCTYPE html> <html> <head> <title></title> <script src="jquery-2.0.3.min.js"> </script> </head> <body> <form id="myForm&

JSON字符串如何转化成对象?

解析 1.定义:是指将符合 JSON 语法规则的字符串转换成对象的过程. 2.不同的编程语言都提供了解析 JSON 字符串的方法,在这里主要讲解 JavaScript 中的解析方法.主要有三种: 1)- 使用 eval() 2)- 使用 JSON.parse() 3)- 使用第三方库,例如 JQuery 等 eval() 1.eval() 函数的参数是一个字符串,其作用是直接执行其中的 JavaScript 代码. 2.eval() 能够解析 JSON 字符串.从这里也可以看得出,JSON 和

jQuery回调、递延对象总结(一)jQuery.Callbacks详解

前言: 作为参数传递给另一个函数执行的函数我们称为回调函数,那么该回调又是否是异步的呢,何谓异步,如:作为事件处理器,或作为参数传递给 (setTimeout,setInterval)这样的异步函数,或作为ajax发送请求,应用于请求各种状态的处理,我们可以称为异步回调,jQuery.Callbacks 为我们封装了一个回调对象模块,我们先来看一个应用场景: // 为什么jQuery中的ready事件可以执行多个回调,这得益于我们的jQuery.Deferred递延对象(是基于jQuery.Ca

Java IO流 序列列一:字符编码

1. 字符编码 先来看一下不同的字符编码 String s = "爪哇ABC"; 1.1 utf-8编码 utf8编码:中文占用3个字节,英文占用1个字节 byte[] bytes = s.getBytes("utf-8"); for(byte b : bytes){ //把字节(转换成了int)以16字节的方式显示 System.out.print(Integer.toHexString(b & 0xff) + "  "); } Sys

jQuery 将选中的对象转化为原始的DOM对象

在jQuery中,在一个页面上选择元素返回的集合是jQuery对象而不是原始的DOM对象. 所以只能运行jQuery方法. 如果要在选择集上运行DOM方法和属性,该集合必须转化为DOM对象 比如你不可以这样使用: $('div').innerHTML = "hello world"; 因为innerHTML是 DOM的属性而不是jQuery对象的属性.如果确实想这么做.那么就需要将jQuery对象转化为DOM对象.方法有两种. ①jQuery提供一种核心方法get(),所以上面的可以写

json字符串转换成对象,对象转换成json字符串

方法一: 程序集:  System.Web.Extensions; 命名空间:System.Web.Script.Serialization; 最重要的类:JavaScriptSerializer //实例化 JavaScriptSerializer js = new JavaScriptSerializer(); js.Serialize();//将对象转换成json字符串:    序列号 js.Deserialize();//将json字符串转换成对象:  反序列化 方法二: 程序集:New

浅析jQuery框架与构造对象

这是一些分析jQuery框架的文字    面向的读者应具备以下要求 1.非常熟悉HTML 2.非常熟悉javascript语法知识 3.熟悉javascript面向对象方面的知识 4.熟练使用jQuery框架 言归正传! jQuery对象的初始化是写在匿名函数里的 就像这样: (function(){alert("jQuery框架分析")})(): 第一个括号是声明了一个函数,第二个括号是执行这个函数.也就是说,jQuery框架在页面载入的时候已经做了一些事情(这个个匿名函数已经被执行

.Net之使用Jquery Ajax通过FormData对象异步提交图片文件到服务端保存并返回保存的图片路径

前言: 首先对于图片上传而言,在我们的项目开发中可以说出现的频率是相当的高的.这篇文章中,我将要描述的是在我们.Net中如何使用Jquery Ajax通过FormData对象异步提交图片文件到后台保存,并返回保存的图片路径展示出图片,实现一个无刷新的异步图片上传的过程,当然这里我讲解的是单张图片的保存过程,对于多图片上传的话其实我们只需要在type='file'文本框中加上一个multiple可多选,然后获取input中的文件数组遍历向后台提交感兴趣的话可以尝试,不过下一篇博客将会讲解如何使用L

checkbox中jQuery对数组和对象的操作

------------------------------------------------------------------------------------------ 来段小例子,jQuery实现对表单中checkbox的全选/取消/反选 [email protected] <www.chenwei.ws>--------------------------- <input type="checkbox" class="all" /&