用jquery以及json包将表单数据转为json字符串+将前台的json转换成字典类型

参考资料(http://blog.csdn.net/jialisoftware/article/details/8485798)

用jquery以及json包将表单数据转为json字符串+将前台的json转换成字典类型:

 118人阅读 评论(0) 收藏 举报
提供一个将表单数据转为json对象,再转为字符串,提交到后台,后台就可以将数据转为json对象,方便操作,假如有用到json作为数据处理手段的话。希望大家可以用到!(不能直接套用的话,用浏览器js调试工具调试下,就行了)
 
要用到的包:json2.js,jquery(可以百度);
 
我的调用:

function BeforeAddCompanySubmit() {
//仅仅先保存数据即可
$("#importModel").val('');
var dataVo = $("#BeforeAddCompany").serializeArray();
var dataJson = convertToJson(dataVo);
dataVo = JSON.stringify(dataJson);
$("#importModel").val(dataVo);
}

我的后台:

//将前台的json转换成字典类型:

 ImportSunCompanyModel model = JsonHelper.Jso_DeJSON<ImportSunCompanyModel>(forms["importModel"]);

 

/**

* 将表单对象转为json对象
* @param formValues
* @returns
*/
function convertToJson(formValues) {
var result = {};
for (var formValue, j = 0; j < formValues.length; j++) {

formValue = formValues[j];

var name = formValue.name;
//在检查check时候,选中的总是提交了两个对象,取第一个为正确,此处是我实践时候修改的;
if (result[name]) {
continue;
}

var value = formValue.value;

if (name.indexOf('.') < 0) {

result[name] = value;

continue;

} else {

var simpleNames = name.split('.');

// 构建命名空间

var obj = result;

for (var i = 0; i < simpleNames.length - 1; i++) {

var simpleName = simpleNames[i];

if (simpleName.indexOf('[') < 0) {

if (obj[simpleName] == null) {

obj[simpleName] = {};

}

obj = obj[simpleName];

} else { // 数组

// 分隔

var arrNames = simpleName.split('[');

var arrName = arrNames[0];

var arrIndex = parseInt(arrNames[1]);

if (obj[arrName] == null) {

obj[arrName] = []; // new Array();

}

obj = obj[arrName];

multiChooseArray = result[arrName];

if (obj[arrIndex] == null) {

obj[arrIndex] = {}; // new Object();

}

obj = obj[arrIndex];

}

}


if (obj[simpleNames[simpleNames.length - 1]]) {

var temp = obj[simpleNames[simpleNames.length - 1]];

obj[simpleNames[simpleNames.length - 1]] = temp;

} else {

obj[simpleNames[simpleNames.length - 1]] = value;

}


}
}
return result;
}

posted @ 2013-01-16 17:33  梅花香自苦寒来_rainy  阅读(256)  评论(0)    收藏  举报