javascript - jquery:未捕获的类型错误:非法调用
问题描述
当我尝试将表单提交到服务器端代码上的操作时遇到问题,如下所示:
[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
我在这里做错了什么?有人可以帮我吗?
解决方案
问题是您传递的是 HTML 元素而不是它的值。您可以使用serializeArray
var formdata = $("form").serializeArray();
.serializeArray() 方法创建一个 JavaScript 对象数组,准备好编码为 JSON 字符串。它在表单和/或表单控件的 jQuery 集合上运行。
推荐阅读
- c++ - Protobuf:如果赋予枚举的值在枚举集中不存在怎么办?
- ffmpeg - 如何使用 ffmpeg 录制视频和音频帧
- python - 无法使用线程化 FlaskAPI 显示 PyQt5 GUI
- ssl - 为什么在固定无效的中间证书但有效的叶(服务器)证书时 tls 证书验证失败?
- javascript - html2canvas 和 justgage 的问题
- c++ - 多线程时c ++中的访问冲突异常
- regex - 正则表达式从字符的最后一次出现到数字或 [
- c++ - 理解错误默认定义是不正确的
- django - 转换为 Bootstrap 后表单不起作用
- c# - 在构建时使用 SlowCheetah 对 App.config 进行 C# 转换不起作用