首頁 >web前端 >html教學 >使用html5的FormData物件,透過 Ajax表單非同步提交文件數據

使用html5的FormData物件,透過 Ajax表單非同步提交文件數據

伊谢尔伦
伊谢尔伦原創
2016-12-10 09:28:491938瀏覽

每次在向伺服器提交文件物件資料是,總是需要藉助各種三方插件來實現表單異步提交功能,還要為不同的介面去定制不同的插件css,相當繁瑣。 XMLHttpRequest Level 2 新增了一個新的介面-FormData。利用 FormData 對象,我們可以透過 JavaScript 用一些鍵值對來模擬一系列表單控件,我們也可以使用 XMLHttpRequest 的 send() 方法來非同步的提交表單。與普通的 Ajax 相比,使用 FormData 的最大優點就是我們可以非同步上傳二進位。
話不多說直接上程式碼:

var formData = new FormData();
formData.append('template', that.template);
formData.append('declare', that.declareData.declare);
formData.append('self_intro', that.declareData.self_intro);
formData.append('plan_name', that.declareData.plan_name);
//$("#business_plan") 是一个file类型的input对象
formData.append('business_plan', $("#business_plan")[0].files[0]);
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader("Accept", "application/json");
xhr.send(formData);
// 指定通信过程中状态改变时的回调函数
xhr.onreadystatechange = function () {
    // 通信成功时,状态值为4
    var completed = 4;
    if (xhr.readyState === completed) {
        if (xhr.status === 200) {
            // 处理服务器发送过来的数据
            var result = JSON.parse(xhr.responseText);
            //这里你可以随意的处理这个result对象了
            //...
        } else {// 处理错误
            alert('连接超时');
        }
    }
};


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn