首页 > 解决方案 > Uncaught TypeError: Illegal invocation when using $.post but not $.ajax

问题描述

我正在尝试使用 FormData 将数据发布到另一个 url,以下代码不起作用

        $("form").on("submit", function(e){
                e.preventDefault();
                var formData = new FormData(this);
                //var formData = new FormData($(this)[0]); Tried this
                $.post('myphpfile', formData, function(data){alert(data)});
        });

但以下 $.ajax 有效

        $("form").on("submit", function(e){
                e.preventDefault();
                var formData = new FormData(this);

                $.ajax({
                    url: "myphpfile",
                    type: 'POST',
                    data: formData,
                    success: function (data) {
                        alert(data)
                    },
                    cache: false,
                    contentType: false,
                    processData: false
                });             
        });

我习惯了$.post,那么$.post 中的上述函数的等价物是什么。

标签: jqueryajax

解决方案


$.post 需要字符串或普通对象作为数据参数。因此,您可以将 stringify 用于您的表单数据,如下所示:

$.post('myphpfile', JSON.stringify(formData), function(data){alert(data)});

推荐阅读