Asp.net mvc 如何将json对象发送到MVC4中的控制器操作方法
我正在尝试将我的用户ID和密码发送到我的登录控制器操作方法Asp.net mvc 如何将json对象发送到MVC4中的控制器操作方法,asp.net-mvc,json,Asp.net Mvc,Json,我正在尝试将我的用户ID和密码发送到我的登录控制器操作方法 //Login button click code $("#btnLogin").click(function () { var userCrdential = { UserName: $("inputEmail3").val(), Password: $("inputPassword3").val() }; $.ajax({ type: "POST",
//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);
}
});
});
在我的家庭控制器中,我有登录操作方法
[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");
}
但是我的操作方法没有调用…您需要将
内容
更改为内容类型
并调用JSON。对数据进行字符串化
:
$.ajax({
type: "POST",
url: "/Home/Login",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(userCrdential),
...
});
请参见不要在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
在jquery1.8
中被弃用;您应该改用done
。只需将其从:
var userCrdential = {
UserName: $("inputEmail3").val(),
Password: $("inputPassword3").val()
};
致:
代码中的所有其他内容都可以,但请确保控制器参数具有在此传递的相同参数,即用户名和密码
但是,在调用ajax之前,您需要检查用户输入。您好,我在firebug NetworkError上遇到以下错误:404 Not Found—“我在Common.js文件中有我的ajax调用,我的登录控制器操作在我的HomeController中……只需从public ActionResult Login(用户userCrdential)更改控制器操作即可。”公开JsonResult登录(用户userCrdential)。在firebug中显示post正常,但显示以下错误“NetworkError:404未找到-"...... 我从Content文件夹中的Common.js文件中调用了此ajax,我的控制器操作方法位于我的主控制器中……因为如果更改路由器设置,硬编码值将无效,您必须更新两个位置,而不是一个。非常感谢:)
var userCrdential = "UserName=" + $("inputEmail3").val() + "&Password=" + $("inputPassword3").val();