一、jQuery ajax()使用serialize()提交form数据
jQuery的serialize()方法通过序列化表单值,创建URL编码文本字符串,我们就可以选择一个或多个表单元素,也可以直接选择form将其序列化,如:(name 属性需要填写)
<form id="form1"> <input type="hidden" value ="${topicInfo.id}" name="id" id="id" /> <input type="hidden" value ="${topicInfo.status}" name="status" id="status" /> </form>
$(document).ready(function(){ });
可以把序列化的值传给ajax()作为url的参数,轻松使用ajax()提交form表单了,而不需要一个一个获取表单中的值然后传给ajax(),举例如下:
后台如果接收值为null,把contentType: "application/json"去掉(content-Type定义的是发送至服务器的数据类型,data-Type定义的是服务器返回的数据)
$.ajax({ type: 'post', url: 'your url', data: $("#form1").serialize(), dataType:"json", async:true,//默认异步,false-同步 success: function(data) { // your code } });
$("#form1"). serialize()后台获取不到表单中属性为disabled的元素的值的解决办法
当属性设置为"disabled"时,提交表单时,select的值无法传递,提交前移除disabled属性$("#conferenceType").removeAttr("disabled"); 即可
ajax返回状态为200但进error方法的问题:
可能原因:
1、Ajax请求data:{}参数中,格式存在错误
2、服务返回的数据不是json格式
3、跨域请求
二、serializeArray()读取form表单中的所有数据列表
var siginList = $('#siginForm').serializeArray(); var sigin = {}; var siginArray = []; for (var i = 0; i < siginList.length; i++) { if (siginList[i].name == "siginUserId") { sigin = {}; sigin.siginUserId = siginList[i].value; continue; } if (siginList[i].name == "attended") { sigin.attended = siginList[i].value; continue; } if (siginList[i].name == "reason") { sigin.reason = siginList[i].value; siginArray.push(sigin); continue; } }