JQuery笔记
记两段代码,使用JQuery实现从表单获取json与后端交互,以及把后端返回的json映射到表单相应的字段上。
把表单转换出json对象
//把表单转换出json对象 $.fn.toJson = function () { var self = this, json = {}, push_counters = {}, patterns = { "validate": /^[a-zA-Z][a-zA-Z0-9_]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\])*$/, "key": /[a-zA-Z0-9_]+|(?=\[\])/g, "push": /^$/, "fixed": /^\d+$/, "named": /^[a-zA-Z0-9_]+$/ }; this.build = function (base, key, value) { base[key] = value; return base; }; this.push_counter = function (key) { if (push_counters[key] === undefined) { push_counters[key] = 0; } return push_counters[key]++; }; $.each($(this).serializeArray(), function () { // skip invalid keys if (!patterns.validate.test(this.name)) { return; } var k, keys = this.name.match(patterns.key), merge = this.value, reverse_key = this.name; while ((k = keys.pop()) !== undefined) { // adjust reverse_key reverse_key = reverse_key.replace(new RegExp("\\[" + k + "\\]$"), ''); // push if (k.match(patterns.push)) { merge = self.build([], self.push_counter(reverse_key), merge); } // fixed else if (k.match(patterns.fixed)) { merge = self.build([], k, merge); } // named else if (k.match(patterns.named)) { merge = self.build({}, k, merge); } } json = $.extend(true, json, merge); }); return json; };
将josn对象赋值给form,使表单控件也显示相应的状态
//将josn对象赋值给form $.fn.loadData = function (obj) { var key, value, tagName, type, arr; this.reset(); for (var x in obj) { if (obj.hasOwnProperty(x)) { key = x; value = obj[x]; this.find("[name='" + key + "'],[name='" + key + "[]']").each(function () { tagName = $(this)[0].tagName.toUpperCase(); type = $(this).attr('type'); if (tagName == 'INPUT') { if (type == 'radio') { if ($(this).val() == value) { $(this).attr('checked', true); } } else if (type == 'checkbox') { arr = value.split(','); for (var i = 0; i < arr.length; i++) { if ($(this).val() == arr[i]) { $(this).attr('checked', true); break; } } } else { $(this).val(value); } } else if (tagName == 'SELECT' || tagName == 'TEXTAREA') { $(this).val(value); } }); } } }
补充:下面看下jQuery两种扩展方法
在jQuery中,有两种扩展方法
1.类方法($.extend())
<script> $.extend({ print1:function(name){ //print1是自己定义的函数名字,括号中的name是参数 console.log(name) } }); $.print1("坤") ; //调用时直接$.函数名(参数); </script>
2.对象方法($.fn.extend())
<body> <input type="text"> <script> $.fn.extend({ getMax:function(a,b){ var result=a>b?a:b; console.log(result); } }); $("input").getMax(1,2); //调用时要$(标签名).函数名(); </script> </body>
3.一般情况下,jQuery的扩展方法写在自执行匿名函数中(原因:在js中是以函数为作用域的,在函数中写可以避免自己定义的函数或者变量与外部冲突)
<script> (function(){ $.extent({ print1:function(){ console.log(123); } }) })(); </script>
总结
以上所述是小编给大家介绍的jQuery扩展方法实现Form表单与Json互相转换的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍JS对象与json字符串相互转换实现方法示例,包括了JS对象与json字符串相互转换实现方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS对象与json字符串相互转换实现方法。分享给大家供大家参考,具体如下: 今天在面试的时候,面试官问到js对象与json字符串的互转问题,由于自己平时在用的时候没有在意,而且在工作中由于用的较少,没有答上来,所以今天特地查查资料复习
本文向大家介绍php实现xml与json之间的相互转换功能实例,包括了php实现xml与json之间的相互转换功能实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现xml与json之间的相互转换功能。分享给大家供大家参考,具体如下: 用php实现xml与json之间的相互转换: 相关函数请查看php手册。 一、参考xml如下 二、xml转换成json 利用simplexml 三
本文向大家介绍jQuery实现的form转json经典示例,包括了jQuery实现的form转json经典示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery实现的form转json功能。分享给大家供大家参考,具体如下: 代码效果演示: PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用: 在线JSON代码检验、检验、美化、格式化工具: htt
本文向大家介绍C#实现实体类与字符串互相转换的方法,包括了C#实现实体类与字符串互相转换的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现实体类与字符串互相转换的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍Java实现String与StringBuilder相互转换,包括了Java实现String与StringBuilder相互转换的使用技巧和注意事项,需要的朋友参考一下 String类型是Java中的一个类,它用来表示一组字符。 Java中的字符串是不可变的,一旦创建,就不能更改字符串的值。 由于字符串是不可变的,因此如果您尝试重新分配字符串的值。它的引用将指向新的String对象,
本文向大家介绍Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码,包括了Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码的使用技巧和注意事项,需要的朋友参考一下 首先是网上大神给的类 然后是我经过2次封装的类,注释很清楚,拿过去直接用就行 以上所述是小编给大家介绍的Java Base64位