3

私は ajax/jquery と php/mysql を使用してフィルター機能に取り組んでいます。1)=>地域用、2)=>地域用の 2 セットのチェック ボックスがあります。両方のチェック ボックスの値を送信して、レコードをフィルター処理したいと考えています。地域のフィルターは、地域のチェック ボックスを選択すると、ローカルでフィルター処理されます。ある程度機能するようになりました。これは、最初のセットで呼び出されます。チェックボックス。

HTML

<div class="locality">
                <input type="checkbox" id="checkbox1" class="checkbox1" value="<?php echo $suburb['suburb_name']?>" name="Suburb_check[]" onClick="changeResults();" onChange="" ><?php echo $suburb['suburb_name']?>  <span class="grey">(<?php echo $suburb['total']?>)</span>
            </div>
            <?php }?>

Javascript/Jquery

function changeResults(){
    var data = { 'venue[]' : []};
        $("input:checked").each(function() {
            var chck1 = $(this).val();
            //alert(chck1);

                data['venue[]'].push($(this).val());

        });

    $.ajax({
     type : 'POST',
     url : 'process.php',
     data : data,
     success : function(data){


          $('#project_section').html(data); // replace the contents coming from php file

            }  
        });

   $.ajax({
     type : 'POST',
     url : 'loadLocality.php',
     data : data,

     success : function(data){
     document.getElementById("searchLoader").style.display = 'block';
              $('#localityList').html(data); // replace the contents coming from php file
        //   alert(data);
     document.getElementById("searchLoader").style.display = 'none'; 
            }  
        });  

    }

これは、Localities を含むチェック ボックスの 2 番目のセットです。

<div class="locality" id="localities">
            <input type="checkbox" onClick="changeLocality();" id="1" value="<?php echo $locality['locality_name'];?>" name="Locality_check[]"><?php echo $locality['locality_name'];?> <span class="grey">(<?php echo $locality['total'];?>)</span>
        </div>

上記と同様の関数を呼び出して、別のページに投稿しました。2 番目のチェック ボックス関数は次のとおりです。

function changeLocality(){
    var dataLocality = {'locality[]' : []};
        $("input:checked").each(function() {
            var chcklocal = $(this).val();
            //alert(chcklocal);
            dataLocality['locality[]'].push($(this).val());
        });

 $.ajax({
 type : 'POST',
 url : 'processLocality.php',
 data : dataLocality,
 success : function(dataLocality){
    // document.getElementById("newloader").style.display ="block";
          $('#project_section').html(dataLocality);        // replace the contents coming from php file
          //alert('data');
   // document.getElementById("newloader").style.display ="none";

        }  
    });

}

しかし、地域ボックスを選択してから地域ボックスを選択して地域の選択を解除すると、地域配列に以前の地域値も取得されます (配列の名前は会場です)地域のみを会場配列と地域に入れたいです+地域配列の地域。実際、地域の選択を解除すると、その後の地域値も配列から削除する必要があります。また、それらを別のページに投稿していますが、地域ページには地域値が保持されています。 JQUERYの知識。
投稿を確認しましたが、修正できませんでした。

EDIT チェックボックスの最初のセットをチェックすると配列を取得し、上記の関数を使用してレコードをフィルタリングします。

Array
 (
    [venue] => Array
    (
        [0] => Pune East
        [1] => Pune West
        [2] => Pune North
        [3] => Pune South
    )

)

ここでチェック ボックスの 2 番目のセットのいずれかをクリックすると、このような配列が得られます。

 Array
 (
  [locality] => Array
    (
        [0] => Pune East
        [1] => Pune West        //[0] and [1] are regions
        [2] => Aundh
        [3] => Kalyaninagar     //[2] and [3] are localities
    )

)

注:地域には複数の地域を含めることができますが、データをフィルター処理するための SQL クエリに対する 2 つの異なるパラメーターであるため、両方を異なる配列にする必要があります。私が今十分に明確であることを願っています!
私のアプローチは正しいですか??それとももっと簡単な方法で行うことができますか?
ありがとう

4

3 に答える 3

2

を使用してオブジェクトの内容を選択する.ので、

data['venue[]'].push($(this).val());

次のようにする必要があります。

data.venue[].push($(this).val());
于 2012-06-08T10:10:29.313 に答える
2

変更してみてください

 $("input:checked").each(function() {

$("checkbox[name=check_box_name]:checked").each(function() {

これを両方に変更してください。うまくいくことを願っています

于 2012-06-08T10:37:10.867 に答える
1

さて、私は愚かな間違いだと思います!! :P 問題はチェックボックスの名前にありました。Javascript では、チェックボックスの名前に角かっこ [] を含めることはできませんvenue[]。配列を投稿するための PHP に似ていると推測しました。いくつか読んで検索した後、それを学びました!!!問題は解決しました 答えてくれた人に感謝します。

于 2012-06-13T16:03:59.240 に答える