1

たくさんのチェックボックスがあるフォームがあります。チェックボックスはカテゴリに分かれており、各カテゴリには約 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 個の配列を渡すようなものになる可能性があります。
何時間もグーグルで調べた後、チェックボックスを this<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おそらく、チェックされた値でそれらのサイズのインデックスだけを送信する方が良いでしょう。これを達成するためのより良い方法はありますか。前もって感謝します。

4

1 に答える 1