一、uery方法中自带了一个序列化的方法:
var formdata = $("#widget-search form").serializeArray();
二、较上个方法略好些,如下:
var jsonCondition = {}; // 拼接需要传输的参数
var formdata = $("#widget-search form").serializeArray();
$.each(formdata, function(index, element){
if (jsonCondition[this.name] !== undefined) {
if (!jsonCondition[this.name].push) {
jsonCondition[this.name] = [jsonCondition[this.name]];
}
jsonCondition[this.name].push(this.value || '');
} else {
jsonCondition[this.name] = this.value || '';
}
});
console.info(jsonCondition);
但会有个问题:
如果里面有checkbox等值需要获取,且多选情况下只选择一项时与选择多项时,返回的JSON结果结构是不一致的,前者是 object ,后者是JSONArray
三、较上面方法更好,如下:
// 获取查询条件 可以被公用
function getLoadCondition(pageNo, pageSize){
var jsonCondition = {}; // 拼接需要传输的参数
// 循环获取所有的 文本框 input[type=text]
$("#widget-search input[type=text]").each(function(){
if($.trim($(this).val()) != ''){
jsonCondition[$(this).attr('name')]= $.trim($(this).val());
}
});
// 循环获取所有的 单选框 input[type=radio]:checked
$("#widget-search input[type=radio]:checked").each(function(){
if($.trim($(this).val()) != ''){
jsonCondition[$(this).attr('name')]= $.trim($(this).val());
}
});
var arr = new Array();
// 循环获取所有的 复选框 input[type=checkbox]:checked
$("#widget-search input[type=checkbox]:checked").each(function(){
arr.push($.trim($(this).attr('name')) + '--' + $.trim($(this).val()));//向数组中添加元素 将数组元素连接起来以构建一个字符串
});
// 循环获取所有的 下拉选择框 input[type=checkbox]:checked
$("#widget-search option:selected").each(function(){
arr.push($.trim($(this).parent().attr('name')) + '--' + $.trim($(this).val()));//向数组中添加元素 将数组元素连接起来以构建一个字符串
});
// 开始对 arr 集合循环
$.each(arr, function(index, value){
var name = value.split('--')[0];
var val = value.split('--')[1];
if (jsonCondition[name] !== undefined) {
if (!jsonCondition[name].push) {
jsonCondition[name] = [jsonCondition[name]];
}
jsonCondition[name].push(val || '');
} else {
jsonCondition[name] = val || '';
jsonCondition[name] = [jsonCondition[name]];
}
});
console.info(jsonCondition);
jsonCondition['pageNum'] = pageNo == null ? 1 : pageNo; // 页码
jsonCondition['pageSize'] = pageSize == null ? 15 : pageSize; // 显示页数
return jsonCondition;
}
到此结束。。。
闪出 ... ...