当前位置: 首页 > 面试题库 >

如何在查询字符串中传递数组?

蓬琦
2023-03-14
问题内容

是否存在通过查询字符串传递数组的标准方法?

需要明确的是,我有一个带有多个值的查询字符串,其中一个是数组值。我希望将该查询字符串值视为一个数组-我不希望该数组爆炸,以使其与其他查询字符串变量没有区别。

编辑:

根据@Alex的答案,没有标准的方法可以执行此操作,因此我的后续工作是什么才是 识别 我正在读取的参数同时是 PHP
Javascript 数组的简单方法?

用相同的名称命名多个参数是否可以接受,这样我就知道它们属于数组?例:

?myarray=value1&myarray=value2&myarray=value3...

还是这是不好的做法?


问题答案:

这是我发现的:

提交多值表单字段(即通过GET / POST var提交数组)可以用几种不同的方式完成,因为不一定要阐明标准。

发送多值字段或数组的三种可能方法是:

  • ?cars[]=Saab&cars[]=Audi (最佳方法-PHP将其读入数组)
  • ?cars=Saab&cars=Audi (错误的方式-PHP仅注册最后一个值)
  • ?cars=Saab,Audi (没有尝试过)

表格范例

表单上,​​多值字段可以采用将 选择框设置为多个的形式

<form> 
    <select multiple="multiple" name="cars[]"> 
        <option>Volvo</option> 
        <option>Saab</option> 
        <option>Mercedes</option> 
    </select>
</form>

(注意:在这种情况下,命名select控件很重要some_name[],这样PHP会将生成的请求vars注册为数组)

…或 多个具有相同名称的隐藏字段

<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">

注:
使用field[]多个值实在是记录不完整。在查询字符串Wikipedia中关于多值键的部分中,或者在处理多选择输入的W3C文档中,我没有看到任何提及。

更新

正如评论者所指出的,这是非常特定于框架的。一些例子:

请求参数:

?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3

滑轨:

"list_a": "3", 
"list_b":[
    "1",
    "2",
    "3"
  ], 
"list_c": "1,2,3"

角度:

 "list_a": [
    "1",
    "2",
    "3"
  ],
  "list_b[]": [
    "1",
    "2",
    "3"
  ],
  "list_c": "1,2,3"

(角度讨论)

请参阅 node.js*WordpressASP.net中的 示例注释 *

保持顺序: 还有一件要考虑的事情是,如果您需要保持项目的 顺序
(即数组作为有序列表),则实际上只有一个选项,即传递定界的值列表,并将其显式转换为自己数组。



 类似资料:
  • 问题内容: 我正在使用AngularJS路由,并试图查看如何使用查询字符串(例如 )。Angular无法理解包含相同名称的键值对的路由: 问题答案: 我认为路由不适用于查询字符串。可以使用 如下方式而不是使用更RESTful的URL,然后按以下方式定义路由: 或许

  • 我需要传递一个字符串参数作为querystring参数,这应该是可选的。 在这里,我希望将位置作为可选参数。我试着用作为。但它对我不起作用。让我知道解决方案。

  • 问题内容: 如何在sql查询中传递java字符串变量。我已经完成了所有JDBC连接。 我的SQL数据库查询是 它不起作用。但是,如果我执行以下代码,其工作原理 现在告诉我如何将变量名传递给sql查询以执行此操作。Jst告诉我如何将变量locationnames传递给comp.name。 我完整的Java函数如下所示:locationCombo表示在组合框中选择的项目。CropCombo也表示相同的

  • 问题内容: 我喜欢使用URL之类的,而不是传递URL之类的查询字符串。 如何在Struts2中做到这一点? 我做了如下。但它不起作用,显示500错误代码 问题答案: 在2.1+下使用纯Struts2是不可能的。解决方法是,可以使用UrlRewriterfilter进行此操作。从Struts2的2.1+使用通配符的帮助下,你可以使用像看到这样的帖子,但不喜欢。区别在于在第二种情况下没有参数名称。解决

  • 问题内容: 在我的HQL查询下方找到 该查询工作正常,但是在此情况下,我想传递userId的值,但无法弄清楚该怎么做。请帮助..!提前致谢..!! 问题答案: 我很简单地将参数添加到HQL __ 在这里,我有硬编码15您可以简单地使用变量代替它

  • 问题内容: 我在C#中使用elasticsearch.net库,并尝试查询与指定过滤器匹配的对象。 我希望查询返回对象,其中对象的Names集合中至少存在来自过滤器的输入名称之一。 问题是此查询的结果总是使我命中0次,即使我确定数据库中确实存在与指定过滤器匹配的数据,我也想找出我的查询出了什么问题… 该模型: 过滤对象: 查询数据的方法: 我也尝试过以下查询,但都没有产生预期的结果: 适用于我的解