我曾尝试使用ajax post保存数据,但一直收到post 400错误。这是我的代码JS-
$(document).on('click', '.btn-Submit', function (e) {
var user = {};
user.FirstName = $('#FirstName').val();
user.LastName = $('#LastName').val();
user.Email = $('#Email').val();
user.MobileNumber = $('#MobileNumber').val();
user.LoginName = $('#LoginName').val();
user.PassWord = $('#PassWord').val();
$.ajax({
url: '/Users/Create',
type: 'POST',
data: { user: user },
contentType: "application/json; charset=utf-8", // this
dataType: 'json',
success: function (resp) {
console.log(resp)
},
error: function () { }
}); // ajax asynchronus request
});
这是我的控制器
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<JsonResult> Create(User user)
{
try
{
if (ModelState.IsValid)
{
user.CreatedDate = DateTime.Now;
user.CreatedBy = 1;
user.UpdatedBy = 1;
user.UpdatedDate = DateTime.Now;
_context.Add(user);
await _context.SaveChangesAsync();
}
else
{
var error = ModelState.Values.SelectMany(x => x.Errors);
}
}
catch(Exception ex)
{
return Json(new { success = false, message = ex.Message });
}
return Json(new { success = true });
}
我曾认为这两种方法的语法都是正确的,但每次我调用ajax时,我都会得到400的响应。我做错了什么?
尝试如下更改您的对象,并删除[ValidateAntiForgeryToken],因为您通过ajax请求发布数据,它不会验证ForgeryTaken。
var user = new {
FirstName = $('#FirstName').val(),
LastName = $('#LastName').val(),
Email = $('#Email').val(),
MobileNumber = $('#MobileNumber').val(),
LoginName = $('#LoginName').val(),
PassWord = $('#PassWord').val()
};