javascript - Ajax和FormData发送文件失败

标签 javascript jquery ajax

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

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返回我的另一个错误,说Error :类型错误:在未实现 FormData 接口(interface)的对象上调用了“append”。

感谢您的帮助!

最佳答案

必须关闭 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,
});

关于javascript - Ajax和FormData发送文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27401583/

相关文章:

php - Yii2 renderAjax 嵌套Listview

javascript - Angular Material 单独的 md-tabs 主体

javascript - 如何更改下拉菜单语义-ui-react 中的状态

javascript - 负值不显示在分组条形图中

php - 为 Javascript 对象动态添加值和排序

javascript - 页面刷新后保存表单状态

javascript - 使用 ajax 更新 CGridView 不起作用

javascript - 获取网页内容并放入数组或字符串中

javascript - 不滚动时滚动条消失

javascript - 声明全局变量