【问题标题】:Form input value query string order表单输入值查询字符串顺序
【发布时间】:2019-09-02 23:25:37
【问题描述】:

可以有同名的表单输入:

<form>
    <input type="text" name="email">
    <input type="text" name="email">
</form>

表单上的 GET 操作会生成以下查询字符串: ...?email=&email=

因为电子邮件是为自己而存在的,这很好。

现在,如果有属于同一个人的数据(比如属于同一个人):

<form>
    <input type="text" name="first_name">
    <input type="text" name="last_name">

    <input type="text" name="first_name">
    <input type="text" name="last_name">
</form>

生成以下查询字符串: ...?first_name=&last_name=&first_name=&last_name=

我猜查询字符串中的参数排序与 html 中出现的元素相同...不过,我不确定是否总是如此。

因为查询字符串本质上是一个键/值映射,所以排序应该无关紧要...

我可以为每个名称添加一个索引,但是每次我在客户端上添加一个新对时都需要知道最后一个索引。

理想情况下,我希望避免自己添加索引以保持结构更加动态。

有没有更好的策略来避免依赖查询字符串参数的顺序?名称上的数组表示法似乎是用于 PHP 的一种方式,但我希望有一种更通用的方式(不在服务器上使用 PHP)...

【问题讨论】:

  • 你试过把first_name改成first_name[]吗?
  • @B001ᛦ — 除非他们使用的解析器关心 PHP 风格的语法(并且他们表示他们没有),否则所做的只是让名称更复杂(到其中的字符需要的程度)编码)。
  • @Quentin 是的,你是对的,。谢谢你的澄清

标签: html forms go


【解决方案1】:

我猜查询字符串中的参数排序与 html 中出现的元素相同...不过,我不确定是否总是如此。

是的。

因为查询字符串本质上是一个键/值映射,所以排序应该无关紧要...

它不是……虽然你可以把它当作一个。

有没有更好的策略来避免依赖查询字符串参数的顺序?

根据订单完全没问题。

名称上的数组表示法似乎是用于 PHP 的一种方式,但我希望有一种更通用的方式(不在服务器上使用 PHP)...

这是另一个可接受的解决方案。有实现 PHP 样式查询解析的库可用于其他语言。


您也可以使用 JSON 对数据进行编码……但是您需要添加客户端 JavaScript 作为依赖项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 2011-07-12
    • 1970-01-01
    相关资源
    最近更新 更多