我正在尝试将我的用户ID和密码发送到我的登录控制器操作方法。
//Login button click code
$("#btnLogin").click(function () {
var userCrdential = {
UserName: $("inputEmail3").val(),
Password: $("inputPassword3").val()
};
$.ajax({
type: "POST",
url: "/Home/Login",
content: "application/json; charset=utf-8",
dataType: "json",
data: userCrdential,
success: function (res) {
// alert("data is posted successfully");
if (res.success == true)
alert("data is posted successfully");
else {
// alert("Something went wrong. Please retry!");
}
},
error: function (xhr, textStatus, errorThrown) {
alert(xhr.statusMessage);
}
});
});
在我家的Controller中我有登录Action方法
[HttpPost]
[ActionName("Login")]
public ActionResult Login(User userCrdential)
{
string userIdtest = userCrdential.UserName;
string userPasswordtest = userCrdential.Password;
var result=false;
if (userIdtest != null && userPasswordtest != null)
{
result = true;
}
else
{
result = false;
}
return Json(result);
//return RedirectToAction("Index");
}
但是我的动作方法没有调用......
答案 0 :(得分:3)
您需要将content
更改为contentType
并在数据上调用JSON.stringify
:
$.ajax({
type: "POST",
url: "/Home/Login",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(userCrdential),
...
});
请参阅jQuery.ajax
答案 1 :(得分:0)
你永远不应该在MVC中硬编码URL。
而是使用@Url.Action
。
url: ('@Url.Action("Login", "Home")',
userCrdential
需要进行JSON编码:
JSON.stringify(userCrdential)
另外,为了您的理智,请使用fail
方法。
$.ajax("url")
.done(function() {
alert("success");
})
.fail(function() {
alert("error");
})
最后一点,自success
起,jQuery 1.8
已被弃用;你应该使用done
代替。
答案 2 :(得分:0)
只需更改它:
var userCrdential = {
UserName: $("inputEmail3").val(),
Password: $("inputPassword3").val()
};
为:
var userCrdential = "UserName=" + $("inputEmail3").val() + "&Password=" + $("inputPassword3").val();
您的代码中的所有其他内容都可以,但请确保您的控制器参数在此处传递相同的参数,即UserName和Password。
但是你需要在调用ajax之前检查用户输入。