jQuery AJAX’multipart/form-data’不发送数据?

我失去了为什么我不能让jQuery传递上传数据,因为AJAX对象看起来正确配置,并且正在发送正确的Content-Type / MIME类型头。

我已经尝试了两种单独的请求形式 – 一种包含在一个文字中的FormData对象,也只是直接传递FormData对象。

不幸的是,我无法获得任何通知,而$ _FILES和$ _POST都是空数组。

我想使用的理想请求如下:

随着以下代码

var files = new FormData();

$.each(context.prototype.fileData,function(i,obj) { files.append(i,obj.value.files[0]); });

var request = { action: 'upload',id: response.obj.id,data: files };

$.ajax({

    type        : 'POST',url         : context.controller,data        : request,processData : false,contentType : 'multipart/form-data',mimeType    : 'multipart/form-data',success     : function(r) {
        console.log(r);
        //if (errors != null) { } else context.close();

    },error       : function(r) { alert('jQuery Error'); }

});

当我尝试导出$ _FILES和$ _POST时,唯一的反应(查看网络选项卡和控制台)只是两个空数组…

解决方法

您必须传递FormData对象作为数据参数
var request = new FormData();                   
$.each(context.prototype.fileData,obj) { request.append(i,obj.value.files[0]); });    
request.append('action','upload');
request.append('id',response.obj.id);
$.ajax({

    type        : 'POST',url     : context.controller,contentType : false,error       : function(r) { alert('jQuery Error'); }

});

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...