FormData获取未捕获的类型错误

时间:2016-12-01 14:32:26

标签: 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'),
        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
});

但是我得到了这个:

  

获取http://localhost/EOSS2/request.php?[object%20Object] 404(未找到)

当我删除processData: falsecontentType: false时,我收到以下错误:

  

未捕获的TypeError:非法调用

我该怎么办?

1 个答案:

答案 0 :(得分:2)

这里有两个问题。首先,您的错误消息表明您正在发送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
    }); 
});