【发布时间】:2018-08-31 05:20:21
【问题描述】:
我在验证登录时遇到问题。我的JQuery 没有触发,这就是为什么Json 数据没有通过。我希望它在进入控制器之前先触发JQuery。它进入控制器,但问题是未触发 .submit() 函数,这就是未传递 ajax 数据的原因。谢谢。
LogIn.cshtml
@model DTS.Models.User
<h2>LogIn</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.UserID)
<div class="form-group">
@Html.LabelFor(model => model.Username, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Username, new {@id = "Username" })
@Html.ValidationMessageFor(model => model.Username)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Password, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Password, new { @id = "Password" })
@Html.ValidationMessageFor(model => model.Password)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Log In" class="btn btn-default" id="Login"/>
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
<script>
$("#Login").submit(function () {
var dataObject = { UsernName: $("#Username").val(), Password: $("#Password").val() };
$.ajax({
url: Url.Action("LogIn", "User"),
type: "POST",
data: dataObject,
datatype: "json",
success: function(result)
{
if (result.toString()=="Success!") {
alert(result);
}
else
{
alert(result);
}
},
error: function(result)
{
alert("Error");
}
});
})
</script>
UserController.cs
[HttpPost]
public ActionResult LogIn(User user)
{
string message = "";
DynamicParameters param = new DynamicParameters();
param.Add("@Username", user.Username);
param.Add("@UserID", user.Password);
if (ModelState.IsValid)
{
if (DapperORM.ExecuteReturnScalar<User>("LogInUser", param) == null)
{
message = "Success!";
}
else
{
message = "Username or Password is incorrect!";
}
}
else
{
message = "Required fields.";
}
if (Request.IsAjaxRequest())
{
return Json(message, JsonRequestBehavior.AllowGet);
}
else
{
return RedirectToAction("Index", "Document");
}
}
【问题讨论】:
-
提交按钮没有
.submit()事件 -<form>有 - 它的$("form").submit(function () { .... }(或提供<form>和id属性并将其用作选择器) -
然后你需要取消默认提交,否则你将提交两次
-
将提交按钮代码包装在 $(document).ready(function(){ ...here... });
-
并使用
var dataObject = $(this).serialize();(您在创建对象时已经打错了 - 您没有属性名称UsernName) -
对不起先生。这不应该是 .submit 而是 .click 但仍然无法正常工作。
标签: jquery json asp.net-mvc