我的Ajax发布到控制器不起作用。下面的代码是我要执行的操作的基本示例。
在调试模式下,即使我添加了属性,它也会返回null且返回给ajax调用的值是空的
public IActionResult Login([FromBody]Data data)
它仍然不起作用
这是我的所有ajax
$('#SignIn').click(function () {
$('#SignIn').val('Please Wait');
Ajax_Login();
});
function Ajax_Login() {
var data = {
username: $('#Email').val().trim(),
password: $('#Password').val()
};
$.ajax({
type: "POST",
url: "/Upload/Login",
data: data,
contentType: "application/json",
dataType: "json",
success: function (message) {
alert(message);
},
error: function (message) {
alert(message);
}
我也尝试使用 data: JSON.stringfy({ User: Username, Pass: Password })
这是我的控制器
public class Data
{
public string Username { get; set; }
public string Password { get; set; }
}
控制器方式
[HttpPost]
public IActionResult Login(Data data)
{
var message = data.Username + " and " + data.Password;
return Json(message);
}
您在请求中发送对象,因此您需要删除contentType: "application/json",
ajax函数中的选项,以便它使用default 'application/x-www-form-urlencoded; charset=UTF-8'
。
或者(如果您确实使用'application/json'
),则需要使用来对对象进行字符串化data: JSON.stringify(data),
。但是,在mvc中,如果通过牢固地绑定到模型正确生成了视图(例如使用<input asp-for="Username" />
或),则几乎不必使用这些选项@Html.TextBoxFor(m => m.Username)
。正确生成视图后,您可以使用var data = $(yourForm).serialize();
正确地序列化所有表单控件。
请注意,之所以JSON.stringfy({User: Username, Pass: Password})
无效,是因为您的模型不包含名为User
和的属性Pass
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句