日期:2014-05-16  浏览次数:20428 次

Jquery 将表单序列化为Json对象

大家知道Jquery中有serialize方法,可以将表单序列化为一个“&”连接的字符串,但却没有提供序列化为Json的方法。不过,我们可以写一个插件实现。

?

我在网上看到有人用替换的方法,先用serialize序列化后,将&替换成“:”、“‘”:

Js代码 复制代码 收藏代码
  1. /**
  2. * 重置form表单
  3. * @param formId form的id
  4. */
  5. function resetQuery(formId){
  6. var fid = "#" + formId;
  7. var str = $(fid).serialize();
  8. //str= cardSelectDate=3&startdate=2012-02-01&enddate=2012-02-04
  9. var ob= strToObj(str);
  10. alert(ob.startdate); //2012-02-01
  11. }
  12. function strToObj(str){
  13. str = str.replace(/&/g, "','" );
  14. str = str.replace(/=/g, "':'" );
  15. str = "({'" +str + "'})" ;
  16. obj = eval(str);
  17. return obj;
  18. }
/** 
     * 重置form表单 
     * @param formId  form的id  
     */  
    function resetQuery(formId){  
        var fid = "#" + formId;  
        var str = $(fid).serialize();  
        //str= cardSelectDate=3&startdate=2012-02-01&enddate=2012-02-04  
        var ob= strToObj(str);  
        alert(ob.startdate);//2012-02-01  
    }  
      
    function strToObj(str){  
        str = str.replace(/&/g,"','");  
        str = str.replace(/=/g,"':'");  
        str = "({'"+str +"'})";  
        obj = eval(str);   
        return obj;  
    }  

个人感觉这样做有bug。

?

我的方法是,先用serializeArray序列化为数组,再封装为Json对象。

?

?

下面是表单:

?

Html代码 复制代码 收藏代码
  1. < form