Javascript FormData获取未捕获类型错误

Javascript FormData获取未捕获类型错误,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在使用jQuery通过AJAX提交表单。我有以下代码: $("#myForm-form").on("submit", function(event) { event.preventDefault(); var formData = new FormData($(this)[0]); $.ajax({ url: $(this).attr('action'), type: $(this).attr('method'), da

我正在使用jQuery通过AJAX提交表单。我有以下代码:

$("#myForm-form").on("submit", function(event) {
    event.preventDefault();
    var formData = new FormData($(this)[0]);
    $.ajax({
        url: $(this).attr('action'),
        type: $(this).attr('method'),
        data: { 
            'eoss': 'indexEOSS',
            'form': 'myForm',
            'values': createJSON(), 
            'formData': formData 
        },
        success: function(data) {
            console.log(data);
            eval(data);
            myFormForm(data);
        },
        processData: false,
        contentType: false
    }); 
    return false
});
但我得到的是:

获取404(未找到)

当我删除
processData:false
contentType:false
时,我得到以下错误:

未捕获类型错误:非法调用


我该怎么办?

这里有两个问题。首先,错误消息表明您正在发送GET请求,该请求不适用于
FormData
。在这种情况下,使用POST似乎最适用

其次,您不能在对象中发送
FormData
,因为jQuery将尝试对其进行URL编码,这将导致问题。而是使用
append()
方法向
FormData
对象添加信息。试试这个:

$("#myForm-form").on("submit", function(e) {
    e.preventDefault();

    var $form = $(this);
    var formData = new FormData($form[0]);
    formData.append('eoss', 'indexEOSS');
    formData.append('form', 'myForm');
    formData.append('values', createJSON());

    $.ajax({
        url: $form.attr('action'),
        type: $form.attr('method'), // change the attribute in HTML or hardcode to 'post'
        data: formData,
        success: function(data) {
            console.log(data);
            // eval(data); < never, ever use eval()
            myFormForm(data);
        },
        processData: false,
        contentType: false
    }); 
});
$(“#我的表单”)。关于(“提交”,函数(e){
e、 预防默认值();
var$form=$(此);
var formData=新formData($form[0]);
append('eoss','indexEOSS');
append('form','myForm');
append('values',createJSON());
$.ajax({
url:$form.attr('action'),
类型:$form.attr('method'),//将HTML或硬代码中的属性更改为'post'
数据:formData,
成功:功能(数据){
控制台日志(数据);
//eval(数据);<永远不要使用eval()
myFormForm(数据);
},
processData:false,
contentType:false
}); 
});

它应该是一个POST请求。为什么?无法获取请求?@durisvk否,当处理
FormData
时,您不能使用gett。非常感谢,这个答案非常有用,现在可以使用了:)再次感谢:)没问题,很高兴能提供帮助