当我尝试将表单提交到服务器端代码中的操作时遇到问题,该操作如下:
[ValidateAntiForgeryToken]
public async Task<ActionResult> DoRegister(UserRegistrationViewModel model)
{
// Some code here
}
该表单也包含Html.AntiForgeryToken(),因此这不是问题。 jQuery代码如下所示:
$('form').submit(function (event) {
event.preventDefault();
if ($(this).valid()) {
StartLoading();
var formdata = new FormData($(this).get(0));
$.post("/User/DoRegister",formdata, function (data) {
$(".registerLoader").fadeOut("fast");
if (data.statusCode == 200) {
window.location.href = "/Plans";
}
else if (data.statusCode == 100) {
$("body").html(data.View);
}
});
}
return false;
});
当我尝试提交表单时,出现以下错误:
jquery: Uncaught TypeError: Illegal invocation
我在这里做错了什么?有人可以帮我吗?
答案 0 :(得分:1)
问题在于您正在传递HTML元素而不是其值。您可以使用serializeArray
var formdata = $("form").serializeArray();
.serializeArray()方法创建一个JavaScript对象数组,准备将其编码为JSON字符串。它对表单和/或表单控件的jQuery集合进行操作。