-2

Webサイトのチェック ボックス ベースのフィルター操作に取り組んでいます。これには、さまざまなパラメーターでレコードのリストをフィルター処理する複数のチェックボックスがありますチェックボックスの最初のセットに基づいています。これはそのためのjs関数です。

HTML:

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

Javascript:

function changeResults(){
    var data = { 'venue[]' : []};
        $("input[name=Suburb_check[]]:checked").each(function() {                           var chck1 = $(this).val();
                data['venue[]'].push($(this).val());
                dataString =data['venue[]'.toString()].toString();
        });

    $.ajax({
   type : 'POST',
   url : 'process.php',
   data : "dataString="+dataString,
   success : function(data){
                 $('#project_section').html(data); 
        }  
    }); 
}

これが行うことは、レコードをフィルタリングし、チェックボックスの2番目のセットをロードすることです.1番目のセットのチェックボックス)=>地域の場合、2番目は=>地域 の場合ですチェックボックスの値を渡す配列を作成し、それを文字列に変換しました( .toString ) を .php ファイルに渡します。

同様に、チェックボックスの 2 番目のセットの関数を作成しました。 HTML

<input type="checkbox" onClick="changeLocality();" id="localityCheck" value="<?php echo $locality['locality_name'];?>" name="Locality_check[]">

JS

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

        });

 $.ajax({
 type : 'POST',
 url : 'processLocality.php',
 data : "localityString="+localityString,
 success : function(dataLocality){
          $('#project_section').html(dataLocality);        // replace the contents coming from php file      
        }  
    });
}

値をphpファイルに渡しますが、$_POSTを使用してそれらを取得しようとすると、文字列が互いに混ざり合います。つまり、地域の値は地域文字列に入り、その逆も同様です(同じ結果の配列を使用してこれを試したので、文字列に切り替えました)。これを修正することはできません.なぜこれが起こっているのですか?これは私が値を投稿するphpファイルです。processLocality.php

<?php session_start();
include_once("includes/classes/db_connect.php");
include_once("pagination/paginator.class.php");
$pages = new Paginator();

$regions = "'".$_POST['dataString']."'";
echo $regions;
$arr = explode(",",$regions);
$getFormatedSuburb = implode("','",$arr);

$locality = "'".$_POST['localityString']."'";
echo $locality;
$arrLocal = explode(",",$locality);
$getFormatedLocality = implode("','",$arrLocal);

//Here I get the strings mixed with each other!!
 ?>

必要な形式で SQL クエリの IN 句に渡すために、文字列に式を追加しました。取得した文字列には、地域と地域の両方の値が含まれています。レコードをフィルタリングするための2 つの異なるパラメーターであるため、両方を別々に使用したいと考えています。

        Pune East,
        Pune West,        //1 and 2 are regions
         Aundh,
         Kalyaninagar     //3 and 4 are localities

また、私のアプローチが正しいことを知りたいのですが、これを達成するためのより良い方法はありますか? どんな助けでも感謝します。
ありがとう

4

1 に答える 1

2

セレクターを変更してみてください。これの代わりに:

$("input[name=Suburb_check[]]:checked")
....
$("input[name=Locality_check[]]:checked")

これを行う:

$("input[name=Suburb_check]:checked")
....
$("input[name=Locality_check]:checked")

また、マークアップは次の形式である必要があります。

<input type="checkbox" name="Suburb_check">

各チェックボックス グループに同じ名前を付けます。名前に「[]」を含めることはできません

于 2012-06-11T09:27:43.137 に答える