我试图将HTML表中的数据转换为JSON,以便可以在服务器端相应地处理它.我能够序列化数据,但结果充其量只能生成不直接链接的不同数据数组.
喜欢:
这是我使用的形式:
喜欢:
这是我使用的形式:
<form id="nameGenderForm"> <table id="nameGenderTable"> <tr> <th >Name</th> <th >Gender</th> </tr> <tr> <td><input type="text" name="studentName"></td> <td> <select name="studentGender"> <option value="male">male</option> <option value="female">female</option> </select> </td> </tr> <tr> <td><input type="text" name="studentName"></td> <td> <select name="studentGender"> <option value="male">male</option> <option value="female">female</option> </select> </td> </tr> </table> <input type="submit" /> </form>
序列化数据的脚本是:
$("#nameGenderForm").submit(function(event){ event.preventDefault(); var rawData=$('#nameGenderForm').serializeformJSON(); var formData=JSON.stringify(rawData); console.log(formData); });
serializeformJSON()是我在浏览几页StackOverFlow后得到的:
(function($) { $.fn.serializeformJSON = function() { var o = {}; var a = this.serializeArray(); $.each(a,function() { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; }; })(jQuery);
通过使用所有这些,我能够获得这样的JSON:
{"studentName":["kenpachi","orihime"],"studentGender":["male","female"]}
我尝试了许多方法来使它们以名称 – 性别格式获得,但每种方式都会产生相同的结果.两个不同的数组.使用每种形式也没有帮助.
有没有办法在name-gender数组中获取数据,如下所示:
{"studentName":"kenpachi","studentGender":"male"},{"studentName":"orihime","studentGender":"female"}
请指教.
解决方法
Here you go with demo,稍作修改如下:
循环遍历每个表行,找到输入,textarea和选择类型元素,序列化它们,转换为对象然后推送到数组.
var o = []; $(this).find('tr').each(function() { var $this = $(this); var $elements = $this.find('input,textarea,select') if ($elements.size() > 0) { var serialized = $elements.serialize(); var item = $.toDictionary( serialized ); o.push(item); } });
附:在jquery库中添加了一个名为toDictionary的新函数,因此请确保在代码中也包含该函数.
$.toDictionary函数
(function($) { $.extend({ toDictionary: function(query) { var parms = {}; var items = query.split("&"); // split for (var i = 0; i < items.length; i++) { var values = items[i].split("="); var key = decodeURIComponent(values.shift()); var value = values.join("=") parms[key] = decodeURIComponent(value); } return (parms); } }) })(jQuery);
原文地址:https://www.jb51.cc/jquery/181378.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。