复制代码 代码如下:
$.fn.serializeObject = 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;
}
这个function对于普通的对象转换是足够的,但是如果出现对象内部又包含子对象的情形就不能支持了。
例如我有这样的一个form表单:
复制代码 代码如下:
<form id="testform">
<input type="text" name="name" value="dummyName" id="name">
<input type="text" name="category.id" value="categoryId" id="name">
<input type="text" name="category.name" value="categoryName" id="name">
</form>
对应到server端上的domain class是这样的:
复制代码 代码如下:
public class DummyProduct {
private DummyCategory category;
private String name;
public DummyCategory getCategory() {
return category;
}
public void setCategory(DummyCategory category) {
this.category = category;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class DummyCategory {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
如果想把表单数据序列化成跟server端domain class匹配的json字符串,就可以使用我下面的这个扩展
复制代码 代码如下:
/** @serializedParams looks like "prop1=value1&prop2=value2".
Nested property like 'prop.subprop=value' is also supported **/
function paramString2obj (serializedParams) {
var obj={};
function evalThem (str) {
var attributeName = str.split("=")[0];
var attributeValue = str.split("=")[1];
if(!attributeValue){
return ;
}
var array = attributeName.split(".");
for (var i = 1; i < array.length; i++) {
var tmpArray = Array();
tmpArray.push("obj");
for (var j = 0; j < i; j++) {
tmpArray.push(array[j]);
};
var evalString = tmpArray.join(".");
// alert(evalString);
if(!eval(evalString)){
eval(evalString+"={};");
}
};
eval("obj."+attributeName+"='"+attributeValue+"';");
};
var properties = serializedParams.split("&");
for (var i = 0; i < properties.length; i++) {
evalThem(properties[i]);
};
return obj;
}
$.fn.form2json = function(){
var serializedParams = this.serialize();
var obj = paramString2obj(serializedParams);
return JSON.stringify(obj);
}
使用起来大概像这个样子:
复制代码 代码如下:
var json = $("#testform").form2json();
alert(json);
相关推荐:
“更加通顺”-让生活与工作无缝衔接的语言魅力,SEO书架书桌收纳
AI+写文章:开启智能创作新时代
seo高手有什么条件,seo难上手吗 ,指南ai写作电力创新
“曝光量扩大,助力品牌腾飞的秘密武器”,盐山网站优化免费咨询
SEO客服:如何提升客户体验与业务转化的双赢策略,鄂州网站建设公司教程
主流seo是什么,seo是什么推广网站 ,AI心理师
seo规范是什么,seo行业标准 ,啊龙ai音乐
文章AI排版,让创作更高效的秘密武器
ChatGPT-深度学习与自然语言处理的革命性突破,金华ai视觉锁螺丝机
seo软件是什么职位,seo用的是什么软件 ,ai感知树
如何选择适合你的AI工具?全面解析AI工具哪个好用
SEO优化做什么的?揭秘SEO优化的核心价值与实战应用,ai做金色
SEO这种营销方式,改变你网站流量的秘密武器,佛山网站设计建设
ChatGPT页面空白不乏登录:让你秒变职场高手与生活智囊,百度ai 腾讯ai
SEO目标:让您的网站轻松登顶搜索引擎,优化购物网站的搜索
ChatGLM不能搜索网页内容,你真的了解它的局限性吗?,ai修复情侣
SEO职责:为网站注入流量,提升品牌竞争力,拼多多女装关键词排名
《收录情况:数字时代的网络信息检索与价值体现》,山东全域营销推广软件客服电话
AI人工智能:改变未来的科技革命
用AI批量下载工具,高效管理你的文件和资源
SEO拓客,让您的业务飞速增长!,密云自适应网站建设
丹东抖音seo是什么,抖音seo引流 ,ai工具编写作业指导书
为什么选择老域名注册,打造品牌价值的秘密武器,网站建设服务费用多少
用AI写文章,释放你的创作潜力!
SEO流程全解析:如何提升网站流量与排名,账号如何营销推广
ChatGPT无法加载?检查您的网络设置并尝试重启Chat,ai写作怎么写作文的
主题导航-引领互联网世界的智慧之路,大渡口网站建设方案
GPT-3.5免费吗?揭秘AI智能助手的未来与收费模式,ai 美美
AI工具汇总网站,让科技为您的工作加速
SEO调整,助力网站流量爆发式增长!,江都seo优化排名
内容创作新时代:自动生成文章的AI如何改变写作生态
seo营销方法是什么,seo营销模式 ,ai山海
SEO售产-数字营销新战场,助力企业实现盈利增长,去哪找自贡网站建设
ChatGPT怎么找梯子:突破网络限制,轻松访问AI助手的终极指南,鬼灭之刃人物AI还原
SEO永远,数字营销的核心力量,广州seo搜索栏内容
在线AI文章:为您打造全新内容创作体验
GPT-3.5网页版:让你与人工智能零距离接触,ai英语学
SEO怎么做才能提升网站流量与排名?这篇文章给你全攻略,铁岭定制网站推广公司电话
SEO观察:2025年搜索引擎优化的新趋势与机遇,seo2是什么状态
ChatGPT付款被拒?如何应对与解决常见支付问题,掉包ai
ChatGPT页面怎么拖不动?解决问题的终极指南,日韩AI换脸在线观看
SEO作用:提升网站流量与品牌曝光的秘密武器,美容网站联盟平台推广
ChatGPT一经发布,便受到了用户的狂热追捧,引爆人工智能热潮,十代ai达人办公本
ChatGPT360:全方位提升你的工作与生活效率,ai72787
AI网站开发与代码创新:引领未来数字化变革的关键,ai ay规则
ChatGPT故障:科技背后的秘密与应对策略,华为什么手机带ai功能
seo种草什么意思,seo yoo na ,三维地震反演AI
AI免费文章解读:智能写作新篇章,小店AI
文章续写AI:提升写作效率,创意无限
SEO建议:如何通过优化提升网站流量,赢得市场竞争,自媒体网站免费推广平台