未捕获的TypeError:使用$ .post而不是$ .ajax时非法调用

时间:2018-06-21 10:27:46

标签: jquery 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中的上述功能。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如果在$ .post调用之前的某处下面添加一行代码,则您的代码将起作用。请注意,它将影响所有$ .ajax及其速记方法的行为。

$.ajaxSetup({ contentType: false, processData: false });