我一直在这里看问题:将MVCajaxjson发布到控制器操作方法,但不幸的是,它似乎并没有帮助我。我的几乎完全相同,除了我的方法签名(但是我已经尝试过了,但仍然没有被击中)。
$('#loginBtn').click(function(e) { e.preventDefault(); // TODO: Validate input var data = { username: $('#username').val().trim(), password: $('#password').val() }; $.ajax({ type: "POST", url: "http://localhost:50061/checkin/app/login", content: "application/json; charset=utf-8", dataType: "json", data: JSON.stringify(data), success: function(d) { if (d.success == true) window.location = "index.html"; else {} }, error: function (xhr, textStatus, errorThrown) { // TODO: Show error } }); });
[HttpPost] [AllowAnonymous] public JsonResult Login(string username, string password) { string error = ""; if (!WebSecurity.IsAccountLockedOut(username, 3, 60 * 60)) { if (WebSecurity.Login(username, password)) return Json("'Success':'true'"); error = "The user name or password provided is incorrect."; } else error = "Too many failed login attempts. Please try again later."; return Json(String.Format("'Success':'false','Error':'{0}'", error)); }
但是,无论我尝试什么,我都Controller不会受到打击。通过调试,我知道它发送了一个请求,Not Found每次都会得到一个错误。
Controller
Not Found
您的操作需要字符串参数,但是您要发送一个复合对象。
您需要创建一个与您要发送的内容匹配的对象。
public class Data { public string username { get;set; } public string password { get;set; } } public JsonResult Login(Data data) { }
编辑
另外,toStringify()可能不是您想要的。只需发送对象本身。
data: data,