form表单提交时自动将文本框的值序列化为json对象

form表单提交时自动将文本框的值序列化为json对象

form表单如下:

<form id="goodsSelect">
		<input name="userid" value="t001">
		<input name="goodsname" value="真皮草尼克大衣">
		<input name="goodsid" value="y001">
		<input name="goodsprice" value="200">
		颜色: <select name="goodscolor">
					<option value="蓝色">蓝色</option>
					<option value="黑色">黑色</option>
					<option value="红色">红色</option>
					<option value="绿色">绿色</option>
			  </select>
		尺码: <select name="goodssize">
					<option value="S">S</option>
					<option value="M">M</option>
					<option value="L">L</option>
					<option value="XL">XL</option>
			  </select>
		数量:<input name="goodsnumber" value="0">
		<button type="button" id="tocat" onclick="addToshoppingcat(this.id)">加入购物车</button>
</form>

Ajax如下:

//====== 加入购物车 =======
function addToshoppingcat(e){
	var goodsInfo = $(e).serializeObject();    //serializeObject()的作用既是序列号表单为json对象
	$.ajax({
			type:'post',
			url:'/xxxxxx/addtocatServlet',
			data:{
				'userid': goodsInfo.userid,
				'goodsid': goodsInfo.goodsid,
				'goodsname': goodsInfo.goodsname,
				'goodscolor': goodsInfo.goodscolor,
				'goodssize': goodsInfo.goodssize,
				'goodsnumber': goodsInfo.goodsnumber,
				'goodsprice': goodsInfo.goodsprice,
			},
			dataType:'text',
			success:function(res){
				alert(res);
				shoppcatlist();
			},
			error:function(msg){
				console.log(msg);
				console.log('加入购物车失败');
			}
		});
	return false;
}

测试结果如下:在这里插入图片描述

如果提示找不到:serializeObject()方法

在你的js代码中加入serializeObject()方法即可:

//定义serializeObject方法,用于序列化表单为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;
	};
发布了6 篇原创文章 · 获赞 0 · 访问量 161

猜你喜欢

转载自blog.csdn.net/qq_41912398/article/details/103900219