banner
阿珏酱

阿珏酱

いつもとは逆の電車に乗り、見たこともない風景を見に行く
twitter
github
facebook
bilibili
zhihu
steam_profiles
youtube

如何优雅的提交一个表单

Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`

如何优雅的提交一个表单

日期:2019-5-6 阿珏 折腾代码 浏览:1734 次 评论:1 条

这是一个非常基础的 HTML 表单提交问题,但却是一个非常实用的技巧
我的业务场景是这样的:

一个可动态创建 input 的表单,如下图
image

这意味着 input 的 name 不能是一个固定的,要不然肯定会被覆盖掉的

第一种,传统的普通的提交方式,给每一个要提交的 input 一个唯一的 name#

<form id="form1" action="./index.php" method="get">
    <div class="form-control">
        <input type="text" name="name1" />
        <input type="text" name="num1" />
        <input type="text" name="img1" />
    </div>
    <br>
    <div class="form-control">
        <input type="text" name="name2" />
        <input type="text" name="num2" />
        <input type="text" name="img2" />
    </div>
    <br>
    <div class="form-control">
        <input type="text" name="name3" />
        <input type="text" name="num3" />
        <input type="text" name="img3" />
    </div>
    ......
  <input type="submit" value="Submit" />
</form>

浏览器提交抓到的格式是这样子的
image
服务器获取打印出来的是这样的,对后端的数据处理就非常不友好
image

第二种,数组的方式进行表单提交#

<form id="form1" action="./index.php" method="get">
    <div class="form-control">
        <input type="text" name="infos[1][name]" />
        <input type="text" name="infos[1][num]" />
        <input type="text" name="infos[1][img]" />
    </div>
    <br>
    <div class="form-control">
        <input type="text" name="infos[2][name]" />
        <input type="text" name="infos[2][num]" />
        <input type="text" name="infos[2][img]" />
    </div>
    <br>
    <div class="form-control">
        <input type="text" name="infos[3][name]" />
        <input type="text" name="infos[3][num]" />
        <input type="text" name="infos[3][img]" />
    </div>
    ......
  <input type="submit" value="Submit" />
</form>

浏览器和后端打印的分别为
image
image
细心观察就回发现,提交的 name 值发生了变化,变成了一样的 ?数组?

提交到后端就回发现数据比之前整齐多了
但这里要注意的是,提交的数组键中不需要使用引号,要不然引号也会成为键的一部分

当然了,实际中还可能遇到这样的问题,要提交的组数(像上面的 1、2、3)是不确定的,可以在前端随意的添加,这个时候怎么去用数组提交这些内容呢?

下面就是我业务中的实际解决方案
image
这样的话,二维数组的键则不需要我们自己去维护了,由浏览器帮我们自动生成
image
后端接收到的数据则变成了这样子,变得非常好处理了
image
此方法适用于,要提交一堆不确定个数的一组有关的数据对
完结撒花!~

网友评论:

image Railgun 丶无限 2 年前 (2019-05-21)
新技能已 get√

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。