The use of new FormData in js

I. Overview

FormData 对象的使用:
1.用一些键值对来模拟一系列表单控件:即把form中所有表单元素的namevalue组装成
一个queryString
2. 异步上传二进制文件。

2. Use

1. The operation methods of the FormData object are all in the prototype, and they do not have any properties and methods themselves.

Operation method of FormData object

let formData = new FormData()
formData.append('user', 'zhang')
获取 formData.get('user')  //zhang
删除 formData.append('user')
.....

2. Send the file using the FormData object

HTML部分
<form action="">
        <label for="">
            姓名: <input type="text" name="name">
        </label>
        <label for="">
            文件:<input id="file" type="file" name="file">
        </label>
        <label for="">
            <input type="button" value="保存">
        </label>
</form>
JS部分
var btn = document.querySelector('[type=button]');
btn.onclick = function () {
    // 文件元素
    var file = document.querySelector('[type=file]');
    // 通过FormData将文件转成二进制数据
    var formData = new FormData();
    // 将文件转二进制
    *****注意2******
    formData.append('upload', file.files[0]);
    *****注意1******
    var xhr = new XMLHttpRequest;
    xhr.open('post', 'file.php');
    // 监听上传进度
    xhr.upload.onprogress = function (ev) {
    // 事件对象
    // console.log(ev);

        var percent = (ev.loaded / ev.total) * 100 + '%';

        console.log(percent);

        progress.style.width = percent;
    }

    xhr.send(formData);

    xhr.onreadystatechange = function () {
            if(xhr.readyState == 4 && xhr.status == 200) {
                    //
            }
    }
}

Note 1: Use jQuery

 $.ajax({
    url: 'file.php',
    type: 'POST',
    data: formdata,                    // 上传formdata封装的数据
    dataType: 'JSON',
    cache: false,                      // 不缓存
    processData: false,                // jQuery不要去处理发送的数据
    contentType: false,                // jQuery不要去设置Content-Type请求头
    success:function (data) {           //成功回调
        console.log(data);
    }
});

Note 2:
The parameter of the parameter new FormData is a DOM object, not a jQuery object

var formData = new FormData($("#file")[0]);

3. jQuery's parameter serialization method serialize()

The sequence table table content is a string, which is used for Ajax requests. 
$("form").serialize()

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324963374&siteId=291194637