通过Ajax使用FormData对象无刷新上传文件
有两种方式可以创建一个FormData对象: ①创建一个空的FormData对象,然后使用append()方法向该对象里添加字段 ②使用HTML表单来初始化一个FormData对象 下面分别介绍一下: 第一种方式: var oMyForm = new FormData(); oMyForm.append("username", "Groucho"); oMyForm.append("accountnum", 123456); oMyForm.append("file", $('#file')[0].files[0]); $.ajax({ url: '/Manage/UploadImg', type: 'POST', cache: false, data: oMyForm, processData: false, contentType: false, async: false }).done(function(res) {}).fail(function(res) {}); 第二种方式: <form id="uploadForm" enctype="multipart/form-data"> <p>指定文件名: <input type="text" name="filename" value="" /></p> <p>上传文件: <input type="file" name="file" /></ p> <input type="button" value="上传" onclick="doUpload()" /> </form> var formData = new FormData($('#uploadForm')[0]); formData.append('num', '1');//可以在已有表单数据的基础上,继续添加新的键值对 $.ajax({ url: '/upload', type: 'POST', cache: false, data: new FormData($('#uploadForm')[0]), processData: false, contentType: false }).done(function(res) {}).fail(function(res) {}); 注意: Ajax的processData设置为false。因为data值是FormData对象,不需要对数据做处理。 第二种方式中<form>标签加enctyp e="multipart/form-data"属性。 cache设置为false,上传文件不需要缓存。 contentType设置为false。因为是由<form>表单构造的FormData对象,且已经声明了属性enctype="mutipart/form-data",所以这里设置为false。
转自:http://www.cnblogs.com/zzgblog/p/5417969.html
                    
                
                
            
        
浙公网安备 33010602011771号