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