jquery怎么将多个相同表单转成json数组形式。

比如,有这样一个需求,一个人可以添加多条实习经历,我在页面可以点击一个按钮来添加多个实习经历的form,这个表单的内容是一样的,class也是一样,每个表单转成的json格式就是
{Id: "1",name: "xsx",content:"this is a example"},这个我是获取到了。
多个相同表单(input name值相同)的格式要求是:
[ {Id: "1",name: "xsx",content:"this is a example"}, {Id: "1",name: "xsx",content:"this is a example"},{Id: "1",name: "xsx",content:"this is a example"},... ]
现在的问题是我用遍历的方法把每个表单push进一个数组里面,但出来的是{Id: ["1","2","3"],name: ["xsx","sdw","www"],content:["this is a example1","this is a example2","this is a example3"]}这种形式,完全不对啊。
这是表单的转换函数

这是我遍历的函数:
图片描述

求助!

阅读 2.7k
4 个回答
✓ 已被采纳新手上路,请多包涵

谢谢大家,已经解决。下面是我的解决办法:
当个表单序列化:
图片描述

遍历多个表单:
图片描述

其中,$(".xxx_form")为表单的class,(因为id值是唯一,所以这里用类选择器),关键在遍历内容

json.push($(this).serializeObject());这个$(this)就是解决这个问题的关键,也是我忽略的地方。

返回的json变量就是我想要的。

var data = $('.bbbb').serializeObject() 这里应该把所有表单的值都放在一起了,没有对不同表单进行分组存储,
这里推荐https://github.com/marioizqui... 这个组件转成json,

伪代码差不多这样

var datas , data;
$('.bbbb').each(function(){
    data = serializeJSON($(this));
    datas.push(data);
})
//datas 为总数据,data为每个表单的数据; 

JSON.stringify不需要吧

$.fn.serializeObject = function(){
  var result = []
  $(this).each(function(){
    var obj = {}
    $($(this).serializeArray()).each(function(){
      obj[this.name]=this.value;
    })
    result.push(obj);
  })
  return result;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题