我正在尝试使用单一功能在我的网站上提交各种模式的表单。我遇到的问题是在尝试序列化表单时我得到错误'form.serialize()不是函数“。我相信我已经将它缩小到我如何分配表单变量。
提交按钮:
<button id="modalSave" class="btn btn-primary" data-url="/Donors/save" data-form="#DonorAddForm" type="button">Submit</button>
提交功能:
$(".container").on("click", "#modalSave", function() {
var form = $(this).data('form');
$.ajax({
url: $(this).data('url')
dataType: "html",
data: form.serialize(),
beforeSend: function() {
$("#loading").fadeIn();
},
success: function(data, textStatus) {
$("#modalStatus").html(data);
},
complete: function() {
$("#loading").fadeOut();
}
});
});
如果我改变了行:
var form = $(this).data('form');
为:
var form = $('#DonorAddForm');
然后为'form'变量分配表单对象,否则只将其指定为字符串。
如何将对象分配给'form'变量而不是字符串?
答案 0 :(得分:1)
$(this).data('form')
不返回DOM元素 - 它返回data-form属性的值,在本例中为字符串#DonorAddForm
。要检索相应的DOM元素,请使用jQuery通过id:
var formData = $(this).data('form'); // "#DonorAddForm"
var form = $(formData); // DOM element with id="#DonorAddForm"