我有一个带有大量复选框的表格。复选框分为类别,每个类别大约有 20 个复选框。类别是尺寸、颜色等...但为了简化这一点,我只解释具有 20 个复选框的尺寸类别,如下所示:
<form>
<input type="checkbox" name="size[]"><label class="checkboxvalue">size 1</label>
<input type="checkbox" name="size[]"><label class="checkboxvalue">size 2</label>
<input type="checkbox" name="size[]"><label class="checkboxvalue">size 3</label>
.
.
.
<input type="checkbox" name="size[]"><label class="checkboxvalue">size 20</label>
</form>
我想通过 Ajax 调用 php 脚本并从数据库中检索相关记录,这些记录具有已检查的尺寸(当然还有所选的颜色、图案、设计……)。
我想知道是否有机会使用数组发送这么多数据,因为我有 10 个类别和每个类别 20 个复选框,导致有 200 个参数,我认为这太多了。
如果我可以使用一个数组,它可能类似于传递 10 个数组。
经过数小时的谷歌搜索,我发现我应该有这样的复选框<input type="checkbox" name="size[]">
而不是 this <input type="checkbox" name="size1">
,但我被困在 JavaScript 部分。我用这个:
<script>
$("input[name='size[]']").on( "click", function getValues() {
$("input[name='size[]']").map(function() {
return this.checked;
}).get().join(",");
});
</script>
这会根据大小类别复选框返回复选框的逗号分隔值列表true,false,true,true,...,false,false
,但我不知道如何将它们作为数组发送到 php 脚本。我应该使用 JSON 格式吗?如何在 php 脚本上访问它们?这是我的ajax:
function ShowResult(size,color,pattern,design,application,producer) {
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("main").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","filter.php?size[]="+size+"&color[]="+color+"&pattern[]="+pattern+"&design[]="+design+"&application[]="+application+"&producer[]="+producer,true);
xmlhttp.send();
}
作为我的问题的补充部分,将传输的数据最小化到脚本的最佳方法是什么?0 or 1
发送而不是false or true
数组中复选框的选中状态是一种好习惯吗?也许,最好只发送带有检查值的那些大小的索引。有没有更好的方法来实现这一点。提前致谢。