首页 > 解决方案 > 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 

我在这里做错了什么?有人可以帮我吗?

标签: javascriptjqueryasp.netasp.net-mvcasp.net-mvc-4

解决方案


问题是您传递的是 HTML 元素而不是它的值。您可以使用serializeArray

var formdata = $("form").serializeArray();

.serializeArray() 方法创建一个 JavaScript 对象数组,准备好编码为 JSON 字符串。它在表单和/或表单控件的 jQuery 集合上运行。


推荐阅读