如何在ajax中传递inv
数组?我在console.log中获得了inv
数组值,但是在我的php页面中却无法获取该数组。
<script>
var FilterCat=['Location','Name','City','Country','State'];
var inv =[];
for(var j = 0; j < FilterCat.length; j++)
{
var a = FilterCat[j];
a =[];
var apply = document.getElementsByName("Filter['"+FilterCat[j]+"'][]");
for(var i = 0; i < apply.length; i++) {
if(apply[i].checked)
{
var F = a.push(apply[i].value);
}
}
inv[FilterCat[j]]=a;
}
$.ajax({
type : "POST",
url : "../module/ApplyFilter.php",
data :{data:inv},
dataType :'JSON',
success:function(response)
{
alert(response);
console.log(response);
}
});
<script>
在for循环之后,我将在每个数组变量中获取一个值,但是在ajax中,数据将返回黑色数组
在其特定数组中设置了类别明智的值,我需要在ajax中传递一个主数组。
我的控制台响应如下:
City: Array(0)
length: 0
__proto__: Array(0)
Country: Array(0)
length: 0
__proto__: Array(0)
State: Array(0)
length: 0
__proto__: Array(0)
Location: Array(2)
0: "Distributore"
1: "Vendor"
length: 2
__proto__: Array(0)
Name: Array(0)
length: 0
__proto__: Array(0)
length: 0
__proto__: Array(0)
答案 0 :(得分:0)
您的查询选择器不正确。您需要指定name
属性,并用引号引起来的整个值,而不仅仅是下标内的部分。属性选择器必须放在方括号内。所以应该是:
var apply = document.querySelectorAll("[name='Filter["+FilterCat[j]+"][]']");
除此之外,您的代码应该可以工作。在PHP中,所需的值将在$_POST['data']['Location']
,$_POST['data']['Name']
等中。
不过,实际上并不需要额外的data
包装器。如果您这样做:
data: inv
然后在PHP中,您将能够从$_POST['Location']
,$_POST['Name']
等那里获取值。
无论哪种情况,它们都是复选框值的数组。
您还可以通过在选择器中添加:checked
来简化JavaScript代码,因此无需在循环中进行检查。
var apply = document.querySelectorAll("[name='Filter["+FilterCat[j]+"][]']:checked");
var a = apply.map(el => el.value);
inv[FilterCat[j]]=a;