Php 如何以逗号分隔数组的形式发送$\u GET数据
我被一些感觉应该简单的事情难住了。我有三个Php 如何以逗号分隔数组的形式发送$\u GET数据,php,arrays,get,Php,Arrays,Get,我被一些感觉应该简单的事情难住了。我有三个输入,在提交表单时需要在查询字符串中输入它们的值,如下所示 domain.com/?filter=1、2、3 这可能吗?我应该如何构造表单name属性?我还想知道是否可以在提交后获取服务器端的$\u getvalues,自己创建数组并将其设置为页面的URL,但从技术上讲,这不是重定向吗 理想情况下,这将通过查询字符串完成,这样URL就可以被复制、粘贴或共享,它也不是敏感数据。希望有人能帮忙…下面是一些粗略的标记 <form action="get"
输入,在提交表单时需要在查询字符串中输入它们的值,如下所示
domain.com/?filter=1、2、3
这可能吗?我应该如何构造表单name
属性?我还想知道是否可以在提交后获取服务器端的$\u get
values,自己创建数组并将其设置为页面的URL,但从技术上讲,这不是重定向吗
理想情况下,这将通过查询字符串完成,这样URL就可以被复制、粘贴或共享,它也不是敏感数据。希望有人能帮忙…下面是一些粗略的标记
<form action="get">
<select name="filter[]"></select>
<select name="filter[]"></select>
<select name="filter[]"></select>
<button type="submit>Submit</button>
</form>
我并不建议使用这个代码片段,它的存在只是为了演示一个使用JavaScript的可能解决方案
HTML:
请注意,筛选器值输入没有名称
,因此它们不会包含在GET查询字符串中。据我所知,无法在表单元素上构造名称
属性,以获取一个名称的逗号分隔值列表。括号中使用的语法将导致查询字符串看起来像?filter[]=one&filter[]=two&filter[]=three
,PHP应该将其解释为数组。如果需要,您可以使用JavaScript和隐藏输入将其转换为逗号分隔的值,但如果JavaScript被禁用或不可用,这将无法工作。@skeggse感谢您的回复。我认为jS可能是解决这个问题的唯一方法。@Dan如果这个答案解决了您的问题,或者足以回答您的问题,请单击“向上/向下投票”下的灰色复选框接受它。这样,任何有类似问题的人都可以找到对你帮助最大的答案。
<form action="get" id="myform">
<input id="filter-result" name="filter" type="hidden">
<input class="filter-value">
<input class="filter-value">
<input class="filter-value">
<button type="submit">Submit</button>
</form>
var slice = Array.prototype.slice;
var myform = document.querySelector("#myform");
myform.addEventListener('submit', function() {
document.querySelector("#filter-result").value =
slice.call(myform.querySelectorAll(".filter-value"))
.map(function(input) {
return input.value;
}).join(',');
});