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"); } });