Form表单Ajax系列化提交数据

页面上有一个商品的颜色尺码二维输入框,输入完毕之后需要把数据进行提交,点击立即购买则进行页面的跳转,通过form表单将数据提交到后台,而点击添加到购物车的话,则会通过ajax进行数据的提交,页面不进行跳转。前台样式:

下面是form表单:

<form id="cartForm" action="${ctx}/cart/save" method="post">
							<div class="product-page-options">
								<table class="table-bordered table-condensed table-hover table-advance">
								<c:set var="sizeNames" value="${fn:split(product.sizeNames, ',')}" />
								<c:set var="sizeIds" value="${fn:split(product.sizeIds, ',')}" />
								<c:set var="colorNames" value="${fn:split(product.colorNames, ',')}" />
								<c:set var="colorIds" value="${fn:split(product.colorIds, ',')}" />
								<c:set var="sizesCount" value="${fn:length(sizeNames)}" />
									<thead>
									<tr>
										<th class="colorStyle">颜色</th>
										<c:forEach items="${sizeNames}" var="sizeName" varStatus="status">
											<th class="inputStyle">${sizeName}</th>
										</c:forEach>
										<th>小计</th>
									</tr>
									</thead>
									<tbody>
									<c:forEach items="${colorNames}" var="colorName" varStatus="colorsStatus">
										<tr>
											<td class="colorStyle">${colorName}</td>
											<c:forEach items="${sizeNames}" var="sizeName" varStatus="status">
												<c:set var="index" value="${(colorsStatus.index*sizesCount)+status.index}"/>
												<input type="hidden" name="items[${index}].colorId" value="${colorIds[colorsStatus.index]}"/>
												<input type="hidden" name="items[${index}].sizeId" value="${sizeIds[status.index]}"/>
												<input type="hidden" name="items[${index}].productId" value="${product.productId}"/>
												<td class="inputStyle"><input type="text" name="items[${index}].quantity" class="inputStyle form-control" value="${sizesCount}"/></td>
											</c:forEach>
											<td class="inputStyle">12</td>
										</tr>
									</c:forEach>
									<tr>
										<td class="colorStyle totalStyle">合计</td>
										<c:forEach items="${sizeNames}" var="sizeName" varStatus="status">
										<td class="inputStyle totalStyle">12</td>
										</c:forEach>
										<td class="inputStyle totalStyle">24</td>
									</tr>
									</tbody>
							    </table>
							</div>
							<div class="product-page-cart">
								<button class="btn btn-primary" type="submit">立即购买</button>
								<input class="btn btn-primary" type="button" id="btnAddCart" value="添加到购物车"/>
							</div>
							</form>

通过form的系列化数据进行提交是很简单方便的,下面JavaScript代码如下:

    <script type="text/javascript">
      jQuery(document).ready(function() {

        $('input#btnAddCart').click( function() {

      	    $.ajax({
      	        url: '${ctx}/api/v1/drp/cart/add',
      	        type: 'post',
      	        dataType: 'json',
      	        data: $('form#cartForm').serialize(),
      	        success: function(data) {
      	                alert("success!");
      	          }
      	    });
      	});

  });

    </script>

绑定input并且id是btnAddCart的按钮,也就是form里面的添加到购物车这个按钮的click事件,然后进行ajax进行提交,url是ajax的提交地址,type是post方式的,data就直接通过form进行数据的序列化,而不需要像以前那样一个个的去查找,实在是方便不少。

下面是后台接收ajax数据的java代码

@RequestMapping(value = "/add",produces = MediaType.APPLICATION_JSON_VALUE)
	@ResponseBody
	public ResponseEntity<?> add(Cart cart){
		if(cart.getItems().size()>0){
			shopCartService.save(cart);
		}
		return new ResponseEntity<Cart>(cart, HttpStatus.OK);
	}	

时间: 2024-10-22 07:36:05

Form表单Ajax系列化提交数据的相关文章

微信小程序--获取form表单初始值提交数据

<form bindsubmit="formSubmit"> <view class="txt"> <view class="ima"></view> <view class="txt2">姓名</view> <input placeholder="请输入姓名" maxlength="10" class=&qu

细说 Form (表单)- Ajax的方式

简单的表单,简单的处理方式 好了,让我们进入今天的主题,看看下面这个简单的HTML表单. <form action="Handler1.ashx" method="post" > <p>客户名称: <input type="text" name="CustomerName" style="width: 300px" /></p> <p>客户电话:

以form表单重用方式进行数据列表行删除

〇.使用框架与技术 后:Java.Spring Boot: 前:JQuery. 一.需求 1.当我们在页面点击每行的删除按钮时,需要服务端进行数据库操作,此时得通过form表单向服务端提交一个http请求. 2.我们当然可以把整个列表套在一个form表单里.但又由于某些原因,不能把列表套在form表单中. 3.并且我们又不想把form表单一个个写在每行的删除按钮下. 二.解决 利用JQuery按钮点击事件使得form表单重用. 1.写一个form表单(注意要有id) 1 <!-- 2 this

form表单转换为Json字符串数据

https://github.com/marioizquierdo/jquery.serializeJSON 效果图 加载使用 <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.serializejson.js"></script>

使用jQuery重用form表单并异步提交到其他action

在做页面开发的时候,有时候要重用表单的数据,并异步请求提交到其他的链接中,这个时候就可以使用jquery去修改表单的action值(记得使用后修改回来),并调用submit方法,当然后台的链接action或者controller方法必须返回值类型为void,否则将发生页面跳转,返回null则显示空白页,无法实现异步调用.另外,这里可以使用另外一个方式提交,将表单序列化,然后用jQuery的ajax提交,不过要对返回的信息进行处理. 直接上代码: (1)jQuery改变form属性 $(".exp

用form表单实现Ajax---post提交

实例讲解:新闻发布实现无刷新上传,显示 html代码: 注意:文本框中并没有id  ,,只有name.jquery获取每个文本框的值还要在拼写提交格式(id=value&name=value&...)太繁琐太麻烦!怎么提交到服务器??js中有详解 <body> <form id="form1">//表单只留个id <table> <tbody> <tr> <td>标题</td> <

序列化多个form表单内容同时提交

一.首先将表单主体序列化为json对象. 方法: //将表单序列化为json,这里加了个jQuery的扩展方法 $.fn.serializeJson = function () { var result = {}; var array = this.serializeArray(); $(array).each(function () { if (result[this.name]) { if ($.isArray(result[this.name])) { result[this.name].

nodejs-http 对form表单上传文件数据的解析过程

前几天碰到了一个需求,允许接收前端用户上传的文件. 当时为了解决问题索性就上github搜了下,找了一个基于nodejs的开发插件. 后来功能实现后觉得意犹未尽,于是自己想试试去写一个类似功能的插件,方便以后拓展,然后就这么开始了. 先来说说应用层的http,数据从前端是怎么被它包装然后传到服务器的. 我们可以在浏览器中查看我们发一个请求的时候包什么格式的,例如我们访问百度时得到的请求包内容: Remote Address:180.97.33.107:443 Request URL:https:

批量审批功能的前端form表单ajax提交多文件多数据

实现的功能: 勾选需要批量修改的信息,点击批量审批按钮,弹出一个用boostrap框架做的模态框,显示出勾选内容的信息,并且填写了内容,上传了多文件之后,通过ajax发送数据. 第一步:先获取选中项该行中需要的数据 //选中项的信息取出来 $('.checkone:checked').each(function () { flow_id += $(this).val() + ','; var name = $(this).parents('tr').find('.name').text().tr