php-获取多个过滤器值参数
作者:互联网
我正在使用此SO question来使用复选框处理过滤器搜索.
这是JS
$('input[type="checkbox"]').on('change', function (e) {
var data = {},
fdata = [],
loc = $('<a>', { href: window.location })[0];
$('input[type="checkbox"]').each(function (i) {
if (this.checked) {
if (!data.hasOwnProperty(this.name)) {
data[this.name] = [];
}
data[this.name].push(this.value);
}
});
// get all keys.
var keys = Object.keys(data);
var fdata = "";
// iterate over them and create the fdata
keys.forEach(function(key,i){
if (i>0) fdata += '&'; // if its not the first key add &
fdata += key+"="+data[key].join(',');
});
$.ajax({
type: "get",
url: "/ajax/get",
data: {
"_token": "{{ csrf_token() }}",
"fdata": fdata
},
success: function (response) {
$('#d2d-results').html(response);
}
});
if (history.pushState) {
history.pushState(null, null, loc.pathname + '?' + fdata);
}
});
现在,我尝试将fdata的价值传递给PHP.
在PHP上,我得到了变量echo $_GET [‘fdata’];的以下值:
discount=Y&brand=BR0006,BR0003
我想要的是
$discount="Y";
$brand="BR0006,BR0003";
有可能这样做吗?
解决方法:
若要执行您想要的,您必须执行两个步骤:
> parse将查询字符串转换为数组:
parse_str($_GET['fdata'], $result);
>然后,将数组extract作为变量:
extract($result);
注意事项:
使用提取物是非常不安全的(而且有些丑陋).用户可以在URL中输入诸如isAdmin = 1之类的内容,这将影响您的代码.基本上,您不能再信任变量了.
我将跳过步骤2(提取内容),直接使用$result,例如echo $result [‘discount’].
标签:query-string,php 来源: https://codeday.me/bug/20191025/1927148.html