Jquery 获取Form表单并返回Jason对象

一、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;
}

到此结束。。。

闪出 ... ...

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值