我试图在ASP.NET MVC表单上做一个简单的AJAX帖子而不重定向,服务器一直返回500错误。当我删除preventDefault时,一切正常但页面发生了变化,我看到5000输出了它。
AJAX请求:
$( ".commentForm" ).submit(function(e) {
// Without this it works fine, but it is needed so we don't leave page
e.preventDefault();
var $this = $(this);
var id = $this.attr("id");
$.ajax({
type: "POST",
url: "/Products/CreateComment",
data: $(id).serialize(),
dataType: "html",
success: function (data) {
alert(data);
}
});
});
ASP.NET MVC6控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult CreateComment(ProductCommentViewModel vm)
{
if (ModelState.IsValid)
{
ProductComment prodComment = new ProductComment()
{
FeedPostId = vm.ProductComment.FeedPostId,
Content = vm.ProductComment.Content
};
return Json(5000);
}
return HttpBadRequest();
}
答案 0 :(得分:2)
您的ajax方法是在服务器上抛出异常,因为您的方法需要ProductCommentViewModel
但使用data: $(id).serialize(),
的数据不会感知您的模型。您需要更改ajax才能使用
data: $this.serialize(),
dataType: "json",
即。您发送的数据是序列化的表单值,因为您的方法返回json,dataType
也必须是'json'