通过Ajax和FormData发送文件失败

时间:2014-12-10 12:55:00

标签: javascript jquery ajax

我试图在Jquery中使用Ajax发送文件,之前创建一个FormData。这是我的代码:

var inputFileImage = document.getElementById('uploadImage');
var file = inputFileImage.files[0];
var data = new FormData();                  
data.append('archivo',file);

jQuery.ajax({
    url: '/services/rpc.php',
    type: 'post',
    data: {functionName: 'saveProfileImage', data : data},
    contentType:false,
    processData:false,
})
.done(function(response) {
    alert(response);            
}.bind(this))
.fail(function(response) {
     alert('Sorry, there was an unexpected error, please try again later.\n\nInformation about the error:\n'+response);
        });

此ajax始终转到fail函数,如果我将processData更改为true,则返回我的另一个错误错误:TypeError:'追加&# 39;调用了一个没有实现接口FormData的对象。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

必须关闭processData才能发送二进制数据。 FormData元素完全用作二进制数据,而data:{}需要处理。在这种情况下,必须将附加参数附加到formData!

var data = new FormData();                  
data.append('archivo',file);               
data.append('functionName','saveProfileImage');

jQuery.ajax({
    url: '/services/rpc.php',
    type: 'post',
    data: data,
    contentType:false,
    processData:false,
});