XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,咱们能够经过JavaScript用一些键值对来模拟一系列表单控件,咱们还可使用XMLHttpRequest的send()方法来异步的提交这个"表单".比起普通的ajax,使用FormData的最大优势就是咱们能够异步上传一个二进制文件. jquery
全部主流浏览器的较新版本都已经支持这个对象了,好比Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。
以前都是用原生js的XMLHttpRequest写的请求ajax
xhr.open("POST", uri, true); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { // Handle response. alert(xhr.responseText); // handle response. } }; fd.append('myFile', file); // Initiate a multipart/form-data upload xhr.send(fd);
其实jquery的ajax也能够支持到的,关键是设置:processData 和 contentType 。浏览器
var formData = new FormData(); var name = $("input").val(); formData.append("file",$("#upload")[0].files[0]); formData.append("name",name); $.ajax({ url : Url, type : 'POST', data : formData, // 告诉jQuery不要去处理发送的数据 processData : false, // 告诉jQuery不要去设置Content-Type请求头 contentType : false, beforeSend:function(){ console.log("正在进行,请稍候"); }, success : function(responseStr) { if(responseStr.status===0){ console.log("成功"+responseStr); }else{ console.log("失败"); } }, error : function(responseStr) { console.log("error"); } });