2012-06-11 50 views
-2

我上了website.This基於複選框過濾操作工作管理串具有過濾器的不同parameters.Similar什麼做here記錄列表。現在我已設法多個複選框爲了取得一些成功,我已經根據第一組複選框過濾了記錄。下面是它的js功能。使用Ajax POST請求和jQuery

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); 
     } 
    }); 
} 

這樣做是過濾記錄+裝載第二組的複選框 .1st設置複選框)= >適用於地區,第二個是=>適用於地區 我創建了一個數組來傳遞複選框值,然後將其轉換爲字符串(.toString)並傳遞給.php文件。

同樣,我爲第二組複選框創建了一個函數。 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子句中所需要的格式。 現在我得到的字符串中包含的值從兩個地區和localities.I希望兩個單獨作爲它們是兩個不同參數篩選記錄

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

另外,我想知道的是,我的做法correct.Any更好實現這一目標的方式? 任何幫助表示讚賞。
謝謝

+2

將代碼放下並隔離問題 - 沒有人會經歷那麼多的代碼。 – Repox

+0

@Repox感謝您的投入!添加細節的原因是我想確保我的觀點非常清楚。我已經更新了這個問題。希望downvote能夠通過這個! – KillABug

回答

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"> 

隨着每個複選框組相同的名稱。該名稱不能包含「[]」

+1

這並不能真正解決問題,因爲我們不知道HTML是什麼樣子,所以無法判斷當前選擇器是否正確。 – Bojangles

+0

@endoalir沒有工作,我已經添加了相同的HTML。 – KillABug

+0

@JamWaffles用HTML更新了問題! – KillABug