麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 擴展 > jQuery > 正文

基于jQuery的一個擴展form序列化到json對象

2024-09-06 20:04:38
字體:
來源:轉載
供稿:網友

jQuery沒有直接支持form到json的序列化方法,目前網上有一個實現是這樣的
復制代碼 代碼如下:
$.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);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 13一14毛片免费看 | 国产精品久久久久久婷婷天堂 | 日韩一级免费毛片 | 爽爽淫人综合网网站 | 成人羞羞网站入口 | 国产精品亚洲精品日韩已方 | 亚洲成人在线免费 | 久久6国产| 精品久久久久久综合日本 | 91成人在线免费视频 | 成码无人av片在线观看网站 | 一级毛片真人免费播放视频 | 亚洲精品v天堂中文字幕 | 成人一级毛片 | 日韩黄a | 久久精品无码一区二区日韩av | 91成人影库 | 一区二区三区四区视频在线观看 | 天天都色视频 | 久草成人在线 | 午夜视频在线免费播放 | 成人啪啪色婷婷久 | 天天草夜夜爽 | 91精品国产一区二区三区动漫 | av噜噜在线 | 国产成人精品无人区一区 | 一级黄色影片在线观看 | 国产成年人在线观看 | 精品一区二区6 | 国产亚洲精品久久午夜玫瑰园 | 国产精品久久久久久久久久东京 | 国产亚洲精品久久久久久久久 | 一级美女大片 | 日日摸夜夜骑 | 日韩在线欧美在线 | 日本xxxx色视频在线观看免费, | 亚洲国产精品二区 | 五月婷婷第四色 | 日本不卡中文字幕 | 99精彩视频在线观看 | 国产91av视频 |