是我收到错误,使用click事件。服务器端代码完成之前,“取消”了Ajax调用。然后,我在$ Ajax错误方法上进行了调试,statusText只是说statusText: "error"
。我通过删除<form id="formid">.... <form/>
找到了一个临时解决方案。但由于我使用的jQuery.ValidationEnginen只能在上使用。
jQuery代码:
$("#formid").validationEngine('attach', { scroll: false }).css({ color: "#4a6b0e" });
$('#submitLogin').click(function () {
var self = this;
var UserName = $("#UserName").val();
var Password = $("#Password").val();
var RememberMe = $("#RememberMe").val();
var PropertyId = ol.property.infoId;
$.ajax({
type: "POST",
url: ol.url("~/Authentication/LogIn"),
data: { "UserName": UserName, "Password": Password, "RememberMe": RememberMe },
success: function (data) {
if (data.Errormes) {
$("#Result").html("Error: " + data.Errormes);
} else {
window.location.reload();
}
},
error: function (data, arg1, arg2, arg3) {
alert("Error: Run for your life!!");
}
});
});
表格:
<form id="formid">
<div class="LeftCol">Brugernavn</div>
<div class="RightCol">
<input type="text" style="width: 250px" id="UserName" name="UserName" class="validate[required,custom[email]]">
</div>
<div class="LeftCol">Adgangskode</div>
<div class="RightCol">
<input type="password" style="width: 250px" id="Password" name="Password" class="validate[required]" />
</div>
<div class="LeftCol">Husk mig?</div>
<div class="RightCol">
<input data-val="true" data-val-required="The Remember me? field is required." id="RememberMe" name="RememberMe" type="checkbox" value="true">
</div>
<br><div class="RightCol" id="Result" style="color:red;"></div><br>
<input id="submitLogin" type="submit" value="Log in" class="oline-button-green white" />
</form>
最佳答案
尝试添加以下内容:
$('#submitLogin').click(function (e) {
e.preventDefault();
// ...
});
由于您将click事件绑定到了一个提交按钮,所以您的ajax请求将被异步发送,并且还将发送该表单,这将导致页面重新加载并且ajax请求被取消。
为了避免单击“提交”按钮时提交表单,您必须使用
e.preventDefault();
阻止提交按钮的默认行为。