form表单序列化和ajax提交表单

页面元素

<link rel="stylesheet" href="http://lib.sinaapp.com/js/bootstrap/3.3.7/css/bootstrap.css">
<script src="https://cdn.bootcdn.net/ajax/libs/layui/2.7.6/layui.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.3/jquery.js"></script>
<form id="frm">
        <div class="form-group">
            <label for="housename">housename</label>
            <input type="text" class="form-control" id="housename" name="houseName" placeholder="housename">
        </div>
        <div class="form-group">
            <label for="InputFile">图片</label>
            <input type="file" id="InputFile" onchange="selImage(this)">
            <img width="240px" height="200px" id="img" hidden><br>
            <input type="text" id="housePic" name="housePic" placeholder="图片" readonly>
        </div>
        <div class="form-group">
            <label for="house_layout">户型</label>
            <input type="text" class="form-control" id="house_layout" name="houseLayout" placeholder="house_layout">
        </div>
        <div class="form-group">
            <label for="house_type">类型</label>
            <select class="form-control" id="house_type" name="houseType">
                <option value="1">合租</option>
                <option value="2">单租</option>
            </select>
        </div>
        <button type="button" class="btn btn-light" onclick="fnSubmit()">Submit</button>
</form>

1.序列化表单数据

借助jQuery的serialize()函数
serialize() 函数的好处:可以一次性获取到表单中的所有的数据。

js:

function fnSubmit() {
    //序列化为字符串(键值格式)
    let formData = $("#frm").serialize();
    console.log(formData);
    $.ajax({
        type: "post",
        url: "http://localhost:8088/Exercises02_Renting/house/add",
        data: formData,
        dataType: "json",
        success: function (res) {
            console.log(res);
            layer.msg(res.msg, { icon: 6, time: 2000 });
            setTimeout(function () {
                window.location.href = "listlist.html"
            }, 2000)
        }
    });
}

2.后端接收

@ResponseBody
@RequestMapping("/add")
public ResultVO add(House house) {
    //houseName=&housePic=&houseLayout=&houseType=1
    //house中属性对应K-V中的键
    boolean add = houseService.add(house);
    return new ResultVO(1000,"添加成功",null);
}

tips

1.在使用 serialize() 函数快速获取表单数据时,必须为每个表单域添加 name 属性!

2.使用该方法得到的结果是一个查询字符串结构:name=value&name=valuej。

3.该方法是 jQuery 封装的,使用时必须引入 jQuery

4.该方法能够获取 隐藏域的值

5.该方法不能得到禁用状态的值

6.该方法不能得到文件域中的文件信息,所以不能完成文件上传

关于serialize()serializeArray()

posted @   zdrcgubjo  阅读(101)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示