js实现表单序列化的两种方法。

Posted 赵小磊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js实现表单序列化的两种方法。相关的知识,希望对你有一定的参考价值。

 

function serialize(form) {
    var parts = [],
            elems = form.elements,
            i = 0,
            len = elems.length,
            filed = null;
    for (; i < len; i++) {
        filed = elems[i];
        switch (filed.type) {
            case "select-one":
            case "select-multiple":
                if (filed.name.length) {
                    var j = 0,
                            opt,
                            optLen = filed.options.length;
                    for (; j < optLen; j++) {
                        opt = filed.options[j];
                        if (opt.selected) {
                            parts.push(encodeURIComponent(filed.name) + "=" + encodeURIComponent(opt.value));
                        }
                    }
                }
                break;
            case undefined:
            case "submit":
            case "reset":
            case "file":
            case "button":
                break;
            case "radio":
            case "checkbox":
                if (!filed.checked) {
                    break;
                }
            default:
                if (filed.name.length && filed.value) {
                    parts.push(encodeURIComponent(filed.name) + "=" + encodeURIComponent(filed.value));
                }
        }
    }
    return parts.join("&");
}

 

 这个方法重点用了html5中的FormData ,还有es6中for of循环。

  function serialize(form) {
        var formData = new FormData(form),
            getValue = formData.entries(),
            parts = [];
        for (var pair of getValue) {
            parts.push(pair[0] + "=" + pair[1]);
        }
        return parts.join("&");
    }

 

以上是关于js实现表单序列化的两种方法。的主要内容,如果未能解决你的问题,请参考以下文章

js阻止表单提交的两种方法

表单提交FormData方法详解

React 实现数据双向绑定 事件的绑定以及传参 获取表单值的两种方法

清空form表单数据的两种方式

form表单提交的两种方式

form表单提交的两种方式