代码之家  ›  专栏  ›  技术社区  ›  omarello

在服务器端处理动态表单

  •  3
  • omarello  · 技术社区  · 15 年前

    我在这里看到了很多关于在jquery或其他javascript库中实现动态表单的问题,我认为我已经成功地建立并运行了一个动态表单来进行测试。

    我的问题是在服务器端命名和处理表单字段的最佳实践是什么。

    我试图实现一个类似联系人的表单,用户可以在其中添加多个电话号码(和类型)以及多个地址(和类型),类似于下面的代码,这是动态复制的代码块。

    <div id="phones">
    <label>Phone Number</label><input type="text" name="phone1" value="" />
    <label>Type</label><input type="text" name="type1" value="" />
    </div>
    

    然后我会有一个+/-链接或按钮来添加另一个电话或删除一个电话。提交表单时,处理名称/类型组合的最佳方法是什么? 我应该把上面写的名字和身份证的后缀放在一起吗? 电话1 / 1型 或者我应该像这样使用数组命名 电话[]/类型[] 并根据索引匹配服务器上的对。

    我正在使用Java(不确定它是否有区别,如果它是Java或PHP或什么),但什么是最好的做法。

    谢谢

    2 回复  |  直到 15 年前
        1
  •  1
  •   Pointy    15 年前

    带索引的方括号似乎是大多数框架所期望的,但它完全依赖于您的框架。在Java世界中,考虑到大约有一百万种不同的框架,您必须从您的框架期望的开始,并适当地修改JavaScript代码。

    我熟悉的唯一的Java框架是条带,它需要方括号。如果你的豆子有财产

    private List<Address> addresses;
    public List<Address> getAddresses() { return addresses; }
    public void setAddresses(final List<Addresses>) { this.addresses = addresses; }
    

    然后,输入将需要“地址[0].street1”、“地址[0].street2”等名称。当为新地址添加新块时,您将拥有与“1”而不是“0”相同的字段。

    然而,一个不同的Java框架可能会以完全不同的方式来做事情。

        2
  •  0
  •   ZZ Coder    15 年前

    在您的案例中,您应该对字段进行具体编号。不要使用数组命名约定,这让我过去很头疼。

    如果您使用数组,那么当参数丢失时,您将面临类型和电话值不匹配的风险。有些浏览器只是忽略空值。

    为了帮助服务器检索所有参数,我通常将字段数放在一个隐藏字段中。因为表格会像这样,

    <div id="phones">
    <input type-"hidden" name="count" value="3" />
    <ul>
    
    <li>
    <label>Phone Number</label><input type="text" name="phone1" value="" />
    <label>Type</label><input type="text" name="type1" value="" />
    </li>
    <li>
    <label>Phone Number</label><input type="text" name="phone2" value="" />
    <label>Type</label><input type="text" name="type2" value="" />
    </li>
    <li>
    <label>Phone Number</label><input type="text" name="phone3" value="" />
    <label>Type</label><input type="text" name="type3" value="" />
    </li>
    </ul>
    </div>