Хобрук: Ваш путь к мастерству в программировании

фильтровать данные по флажку, используя jquery ajax mysql и php

У меня есть группа динамических флажков местоположения

<?php foreach($qry_2 as $v2) { ?>
    <li class="checkbox">
        <label>
            <input type="checkbox" class="i-check" id="locality" name="locality[]" value="<?php echo $v2['outlet_locality'] ?>"><?php echo $v2['outlet_locality'] ?>
            <small class="location"><?php echo '('.$v2['outletCount'].')' ?></small>
        </label>
    </li>
<?php } ?>

и я получил примерно 10 входных значений флажка. Я хочу отфильтровать содержимое в соответствии с флажком (множественный выбор) с помощью jQuery и отправить данные в filter.php для извлечения в виде данных json

$('input#locality').change(function () {
    var locality = [];
    $(':checkbox:checked').each(function (i) {
        locality.push($(this).val());
    });

    $.post("php/filter.php", {name: locality}, function(data){

    });
});

когда я установил флажок, я получил индивидуальное значение, а не массив, так как я могу получить значение массива нескольких флажков, отмеченных для отправки и извлечения данных из filter.php моего filter.php

$qry_1 = array();

$checkbox1 = $_POST['name'];  
$chk = "";   
foreach($checkbox1 as $chk1)  
{  
    $chk .= $chk1.",";  
}
$sql_1 = "SELECT  p.id,p.outlet_id,p.offer_title,p.original_price,p.discount,p.discount_price,p.offer_image,p.offer_details,o.outlet_id,o.outlet_title,o.outlet_locality,o.segment_type FROM products as p,outlets as o WHERE p.outlet_id=o.outlet_id AND o.outlet_locality='$chk'"; 
$qry_1 = sel_qry($sql_1);
foreach($qry_1 as $v)
{
    $filterloc[] = array('title'=>$v['outlet_title'],'cat_id'=>$v['outlet_id']);
}
echo json_encode($filterloc);

я получаю нулевое значение, помогите мне


  • Избегайте ссылок на элементы html в цикле, используя уникальный идентификатор в jquery/javascript. В вашем случае это ``id=locality. Либо сгенерируйте эти идентификаторы динамически, либо лучше используйте класс. Если вы сделаете это изменение, это может решить вашу проблему. 01.04.2016

Ответы:


1

Попробуйте переместить это

$.post("filter.php", { name: locality[i] }, function (data) {
  alert(data);
});

за пределы каждого. то есть:

$('input#locality').change(function () {
  var locality = [];
  $(':checkbox:checked').each(function (i) {
    locality.push($(this).val());
    alert(locality[i])
  });

  $.post("filter.php", { name: locality }, function (data) {
    alert(data);
  });
});

(Конечно, если ваш бэкенд ожидает массив)

01.04.2016
  • он отправляет имя []: location1 name []: location2, тогда как я могу получить это значение в моем filter.php @geo1302 01.04.2016
  • $qry_1=массив(); $checkbox1=$_POST['имя']; $проверить=; foreach($checkbox1 as $chk1) { $chk .= $chk1.,; } $sql_1=SELECT p.id,p.outlet_id,p.offer_title,p.original_price,p.discount,p.discount_price,p.offer_image,p.offer_details,o.outlet_id,o.outlet_title,o.outlet_locality,o .segment_type ОТ продуктов как p, торговых точек как o ГДЕ p.outlet_id=o.outlet_id AND o.outlet_locality='$chk'; $qry_1=sel_qry($sql_1); foreach($qry_1 as $v) { $filterloc[]=array('title'=›$v['outlet_title'],'cat_id'=›$v['outlet_id']); } эхо json_encode($filterloc); я получил нулевое значение, помогите мне @geo1302 01.04.2016
  • Извините, мои знания PHP близки к нулю. Я помог в части Javascript, но из небольшого поиска вы можете получить доступ к массиву следующим образом: ‹? $myArray = $_REQUEST['имя']; ?› 01.04.2016

  • 2

    Попробуйте этот код.

    HTML

    <li class="checkbox">
       <label>
           <input type="checkbox" class="i-check" id="locality" name="locality[]" value="<?php echo $v2['outlet_locality'] ?>"><?php echo $v2['outlet_locality'] ?>
           <small class="location"><?php echo '('.$v2['outletCount'].')' ?></small>
       </label>
    </li>
    

    JS

    $('input.i-check').change(function () {
        var locality = [];
          $(':checkbox:checked').each(function (i) {
                locality.push($(this).val());
          });
    
          $.post("jquery1.php", {name: locality}, function(data){
    
          });
    });
    

    Вместо id locality используется класс i-check

    01.04.2016
    Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..