表单序列化

序列化表单值的作用是将表单中的值拼装成字符串形式的key-value键值对提交给后台服务器程序解析,来获取用户的输入值最总看到的效果如下
name=124&company=baidu.com&fav=1,2,3

下面是示例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
</head>
<body>
    <form id="biaodan">
        <p>
            请输入姓名:
            <input type="text" name="xingming" />
        </p>
        <p>
            请选择性别:
            <input type="radio" name="sex" value="男"/><input type="radio" name="sex" value="女"/><input type="radio" name="sex" value="保密"/> 保密
        </p>
        <p>
            请选择国籍:
            <input type="radio" name="nationality" value="中国"/> 中国
            <input type="radio" name="nationality" value="外国"/> 外国
        </p>
        <p>
            请选择你的爱好:
            <input type="checkbox" name="hobby" value="足球"/> 足球
            <input type="checkbox" name="hobby" value="篮球"/> 篮球
            <input type="checkbox" name="hobby" value="吃饭"/> 吃饭
            <input type="checkbox" name="hobby" value="睡觉"/> 睡觉
            <input type="checkbox" name="hobby" value="打豆豆"/> 打豆豆
        </p>
        <p>
            选择你的省份:
            <select name="hometown" >
                <option value="北京">北京</option>
                <option value="上海">上海</option>
                <option value="东莞">东莞</option>
                <option value="广州">广州</option>
            </select>
        </p>
        <p>
            密码:
            <input type="password" name="password" />
        </p>
        <p>
            留言:
            <textarea name="message" id="" cols="30" rows="10"></textarea>
        </p>
        <p>
            <input type="button" value="点击提交" id="btn"/>
        </p>
    </form>

    <script type="text/javascript" src="js/myajax.js"></script>
    <script type="text/javascript">
        var biaodan = document.getElementById("biaodan");
        var btn = document.getElementById("btn");

        btn.onclick = function(){
            //得到表单中的所有控件
            var elems = biaodan.elements;
            //结果数组
            var arr = [];

            //遍历所有的控件
            for(var i = 0 ; i < elems.length ; i++){
                //当前遍历的小元素
                var e = elems[i];
                //分类讨论:
                switch(e.type){
                    //如果控件的类型是个按钮,那么没有任何返回值
                    case "button" :
                    case "submit" :
                    case "reset" :
                        break;
                    case "text" :
                    case "password" :
                    case "textarea" :
                        arr.push(e.name + "=" + e.value);
                        break;
                    case "radio":
                    case "checkbox":
                        e.checked && arr.push(e.name + "=" + e.value);
                        break;
                    case "select-one":
                        var options = e.getElementsByTagName("option");
                        console.log(options);
                        for(var j = 0 ; j < options.length; j++){
                            if(options[j].selected){
                                arr.push(e.name + "=" + options[j].value);
                            }
                        }
                        break;
                }
            }
            console.log(arr.join("&"));
        }
    </script>
</body>
</html>
原文地址:https://www.cnblogs.com/xiao-song/p/6087805.html