具体实现及调用方式:
//form serialize
$.fn.serializeJson = function () {
var serializeObj = {};
var array = $(this).find("input[type!='checkbox']").serializeArray();
//if checkbox set 1/0
$(this).find("input[type='checkbox']:not(:checked)").each(function () {
array.push({ name: this.name, value: '0' });
});
$(this).find("input[type='checkbox']:checked").each(function () {
array.push({ name: this.name, value: '1' });
});
//textarea
$(this).find("textarea").each(function () {
array.push({ name: this.name, value: this.value });
});
var str = this.serialize();
$(array).each(function () {
if (serializeObj[this.name] != undefined) {
if ($.isArray(serializeObj[this.name])) {
serializeObj[this.name].push(this.value);
} else {
serializeObj[this.name] = [serializeObj[this.name], this.value];
}
} else {
serializeObj[this.name] = this.value;
}
});
return serializeObj;
};
}
调用步骤:
var postData = $("#form1").formSerialize();
$.submit({
url: "/XXX/XXX/",
param: postData,
success: function () {
//doing something
}
})
注意一下,这个submit也是封装的方法,具体实现如下:
$.submit = function (options) {
var defaults = {
url: "",
param: [],
loading: "正在提交数据...",
success: null,
close: true
};
var options = $.extend(defaults, options);
$.loading(true, options.loading);
window.setTimeout(function () {
if ($('[name=__RequestVerificationToken]').length > 0) {
options.param["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
}
$.ajax({
url: options.url,
data: options.param,
type: "post",
dataType: "json",
success: function (data) {
if (data.state == "success") {
options.success(data);
//doing something
} else {
//doing something
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
//doing something
$.modalMsg(errorThrown, "error");
},
beforeSend: function () {
//doing something
},
complete: function () {
//doing something
}
});
}, 500);
}
回到正题,前端进行Ajax提交之后,后台接收如下:
public ActionResult SubmitForm(MyClass _para)
{
//doing something
// 请注意,MyClass 是你定义的类,字段对应表单的项的ID
}
至此表单的序列化传参完毕,如需转载请注明出处!