前端如何获取from表单的数据

怎甘沉沦 提交于 2019-12-18 06:45:50

方法一:serialize()方法通过序列化表单值,创建URL编码文本字符串。
使用方法:$(selector).serialize()
你可以选择一个或者多个表单元素(比如:input及文本框textarea(多行文本框))或者from元素本身。
方法二:serializeArray()方法序列化表单元素,(类似seaialize()方法),返回JSON数据结构数据
注意:对于上述两种方法,文件选择元素不会被序列化!

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        form{
            margin: auto;
        }
        input{
            width: 200px;
            height: 40px;
            border: 1px solid black;
            -webkit-border-radius: 10px;
            -moz-border-radius: 10px;
            border-radius: 10px;
        }
    </style>
    <script src="./jquery-3.4.1.min.js"></script>
</head>
<body>
<!--使用get方式传值,传输的数据会显示在浏览器的地址栏上,并且要给每一个要传输的数据加name名称,这个name名称指代的就是-->
<!--传过去的值的名称-->
<form action="" method="post">
    <input type="text" name="name" value="freely"><br>
    <input type="text" name="age" value="20"><br>
    <input type="text" name="city" value="beijing"><br>
    <input type="text" name="job" value="fe"><br>
    <input type="file" name="file">
</form>
<button id="serialize">send</button>

</body>
<script>
    console.log(window.location.href.split("?"));//使用get方式传值,从路径获取
    $(document).ready(function() {
        $('#serialize').on('click', function() {
            // 方法一 serialize  您可以选择一个或多个表单元素(如输入和/或文本区),或表单元素本身。
            //使用方法$(selector).serialize()
            var str = $('form').serialize();// 得到序列化字符串  注意:文件选择元素不会被序列化!
            console.log(str)// name=freely&age=20&city=beijing&job=fe
            getObj(str);
            // 方法二 serializeArray 注意:文件选择元素不会被序列化!
            //使用方法$(selector).serializeArray()
            // 您可以选择一个或多个表单元素(如输入和/或文本区),或表单元素本身。
            var arr = $('form').serializeArray();
            console.log(arr)
            // 得到数组对象
            /*
             0: {name: "name", value: "freely"}
             1: {name: "age", value: "20"}
             2: {name: "city", value: "beijing"}
             3: {name: "job", value: "fe"}
             */
            // 遍历数组得到 {name: 'freely', age: 20}数据格式
            // 使用jquery方法 $.each方法
            var tempObj = {};
            $.each(arr, function(i, obj) {
                tempObj[obj.name] = obj.value;
            });
            console.log(tempObj); // {name: "freely", age: "20", city: "beijing", job: "fe"}
        });
    });

    function getObj(str) {
        let arr = str.split('&');
        let obj = {};
        arr.map(function(item) {
            let tempArr = item.split('=');
            obj[tempArr[0]] = tempArr[1];
        });
        console.log(obj); // {name: "freely", age: "20", city: "beijing", job: "fe"}
    }
</script>
</html>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!