Javascript 在preventDefault()之后发送表单,缺少“表单数据”
在提交表单之前,我使用Ajax将数据发送到控制器InsertLead,然后我发布表单“SendForm”,但“表单数据”丢失 我正在用chrome:developers工具进行测试 这是我的密码:Javascript 在preventDefault()之后发送表单,缺少“表单数据”,javascript,jquery,asp.net-mvc,forms,Javascript,Jquery,Asp.net Mvc,Forms,在提交表单之前,我使用Ajax将数据发送到控制器InsertLead,然后我发布表单“SendForm”,但“表单数据”丢失 我正在用chrome:developers工具进行测试 这是我的密码: $(document).ready(function () { var request; $('#frm1').submit(function (e) { event.preventDefault(); var referredUse
$(document).ready(function () {
var request;
$('#frm1').submit(function (e) {
event.preventDefault();
var referredUser = new ReferredUser();
referredUser.UserName = $("#fullname1").val();
referredUser.UserPhone = $("#mobilephone1").val();
referredUser.UserEmail = $("#email1").val();
referredUser.Country = $("#country1").val();
referredUser.ReferrerEmail = '@Model.ReferrerEmail';
if (referredUser.UserEmail.value == "") { return false; }
else {
$('#overlay').show()
if (request) {
request.abort();
}
// setup some local variables
var $form = $(this);
// select and cache all the fields
var $inputs = $form.find("input, select, button, textarea");
// serialize the data in the form
var serializedData = JSON.stringify(referredUser);
// disable the inputs for the duration of the ajax request
$inputs.prop("disabled", true);
// fire off the request to the form
request = $.ajax({
url: "/Forms/InsertLead",
type: "post",
data: serializedData,
contentType: 'application/json'
});
request.done(function (response, textStatus, jqXHR) {
$('#overlay').hide()
});
request.always(function () {
SendForm();
// re-enable the inputs
$inputs.prop("disabled", false);
});
}
});
});
function SendForm() {
var serial = '@Model.SerialId';
if (serial.val == "") {
serial = '-1';
}
var formURL = '@regFormURL';
$('#frm1').attr('action', formURL + '?SerialId=' + serial);
document.regForm1.submit();
}
表格:
<form name="regForm1" method="post" id="frm1" action="-1">
<input type="text" name="RegistrationModel.FullName" id="fullname1" />
<input type="text" name="RegistrationModel.Email" id="email1" />
你在阻止错误的事件。使用
$('#frm1').submit(function (e) {
e.preventDefault();
// (...)
你在阻止错误的事件。使用
$('#frm1').submit(function (e) {
e.preventDefault();
// (...)
我猜禁用的输入将不会被发布 禁用的控件无法成功 你应该让它们成为只读的 只读元素可能会成功
或者在调用SendForm之前重新启用它们,我想禁用的输入将不会被发布 禁用的控件无法成功 你应该让它们成为只读的 只读元素可能会成功
或者在调用SendForm之前重新启用它们Btw,$'frm1'。submitfunction e{您应该使用event而不是e作为函数参数。您如何查找表单数据?它不会在POST VAR中。为什么使用document.regForm1.submit;而不是$frm1.submit?@KamilT,因为如果他使用$frm1.submit,它将进入无限循环。顺便说一句,$'frm1.submit函数e{您应该使用event而不是e作为函数参数。您如何查找表单数据?它不会出现在POST vars中。为什么使用document.regForm1.submit;而不是$frm1.submit?@KamilT,因为如果他使用$frm1.submit,它将进入无限循环。因为他在chrome中测试,使用event应该具有相同的效果。但是,是的his是跨浏览器支持的问题之一,但不是此问题引发的问题的原因。已修复为e.preventDefault;但仍然没有表单数据。由于他在chrome中进行测试,使用事件应该具有相同的效果。但这是跨浏览器支持的问题之一,但不是此问题引发的原因问题。已修复为e.preventDefault;但仍然没有表单数据。我怎么会错过它?!非常感谢!我怎么会错过它?!非常感谢!