Я работаю над функциональностью фильтра, используя ajax / jquery и php / mysql. У меня есть два набора флажков: 1) => для регионов 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'; } }); }
Это второй набор ящиков с локалями
<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>
Я вызвал функцию, аналогичную приведенной выше, и разместил ее на другой странице. Вот вторая функция:
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. Я получаю массив, когда проверяю первый набор ящиков chck, а также фильтрует записи, используя вышеуказанные функции.
Array ( [venue] => Array ( [0] => Pune East [1] => Pune West [2] => Pune North [3] => Pune South )
)
Если я сейчас нажму на любой из двух наборов ящиков, я получаю массив такого типа.
Array ( [locality] => Array ( [0] => Pune East [1] => Pune West //[0] and [1] are regions [2] => Aundh [3] => Kalyaninagar //[2] and [3] are localities )
)
Примечание. Область может иметь несколько локалей. Но я хочу, чтобы оба они были разными массивами, поскольку они представляют собой два разных параметра для SQL-запроса для фильтрации данных. Надеюсь, я уже достаточно ясно!
Является ли мой подход RiGHT? Или это можно сделать более простым способом?
благодаря
вы выбираете содержимое объекта с помощью .
Так что ваши
data['venue[]'].push($(this).val());
должно быть:
data.venue[].push($(this).val());
попробуйте изменить
$("input:checked").each(function() {
в
$("checkbox[name=check_box_name]:checked").each(function() {
измените это для обоих, я надеюсь, что это сработает
Ну, теперь я думаю, что это глупая ошибка! : P Проблема заключалась в именах флажков. В Javascript мы не можем иметь venue[]
скобки [] во имя флажков. Предполагалось, что он похож на PHP для размещения массивов. Узнал его после некоторого чтения и поиска! Проблема решена. Спасибо тем, кто ответил.