Сужение поиска с использованием множественного выбора с функцией AJAX - PullRequest
0 голосов
/ 19 мая 2011

У меня есть 3 выбора, которые содержат разные категории.Мой веб-сайт показывает места, где можно поесть, и тогда у меня есть один выбор, который позволит вам выбирать между ресторанами, барами ... Другой выбор позволит вам выбирать между диапазоном цен, а последний позволит вам выбрать тип атмосферы.у места есть.

Способ, которым я его настроил, следующий:

У меня есть 3 выбора и функция .click, которая появляется, когда вы выбираете что-либо в любом из выпадающих меню:

$(".form_comer div.jqTransformSelectWrapper ul li a, .form_salir div.jqTransformSelectWrapper ul li a, .form_dormir div.jqTransformSelectWrapper ul li a, .form_visitar div.jqTransformSelectWrapper ul li a").click(function(){

var index= $(this).attr('index');
var sel= ($(this).closest('div')).children('select').attr('id');
var value = $('select.jqTransformHidden option:eq('+index+')').attr('value');
       $.ajax({
     type: "POST",
     url: $("#form").attr("action"),
     data: "value=" + value + "&sel=" + sel,
     dataType: 'html',
     success: function(data) {
        $("#cont-pag").html(data);
     }
     });
  return false; //prevent default browser action
});        

Это выборка с преобразованием jq, которая делает код сложнее.Value - значение выбранного элемента, а sel - идентификатор выбранного клика (например, цена)

. Это вызовет этот php-файл, где я делаю запрос, и нарисую html, который покажет места, которыеподходит для выбранной категории (столбик, 15 € место ...), но он будет работать только для этой категории, так как я не могу сохранить предыдущий выбор и не могу выбрать место, которое соответствует 2 или 3 из выбранных категорийв то же время: сначала я выбираю посмотреть все рестораны, а затем нажимаю на места, которые стоят 40 €, и когда я это делаю, я хочу, чтобы они по-прежнему показывали только рестораны, но я не могу изменить свои переменные с помощью запроса ajax.

Как это можно сделать?

Ответы [ 2 ]

1 голос
/ 19 мая 2011

Я бы посоветовал вам передавать значение из каждого из трех полей каждый раз, когда вы делаете запрос к конечной точке PHP.Например:

date: "type=" + $("#type_select").val() + "&price=" + $("#price_select").val() + "&atmosphere" = $("#atmosphere_select").val(),

Затем ваш PHP сформулирует запрос, который извлекает только соответствующие строки из базы данных.

Таким образом, вы не извлекаете ненужные строки из базы данных, еслииспользуется более одного фильтра, и вам не нужно слишком много возиться с Javascript.Я могу представить, что значение = type & sel = restaurant может оказаться довольно большим набором результатов в вашей текущей реализации.

1 голос
/ 19 мая 2011

Вы можете получить значения всех трех списков выбора с помощью $(select#id).val() и передать каждый из них при вызове ajax. Затем вы можете проверить, какие значения не пусты, и добавить те, которые не относятся к вашему запросу.

например.

$atmosphere = $_POST["atmosphere"];
if(!empty($atmosphere))
{
    $query .= " AND atmosphere = '$atmosphere'";
}

Если плагин не позволяет вам реагировать на клики или изменения, эта статья может вам помочь. Задача выбора jqTransform и ее решение .

Если получение значений из других списков выбора является проблемой, потому что плагин не позволяет легко идентифицировать, вы можете попробовать зациклить элементы. Я проверил структуру формы jqTransform с помощью firebug и заметил, что выбранное значение всегда помещается внутрь, а внутри другого с class = "jqTransformSelectWrapper", чтобы вы могли использовать .each() jQuery в сочетании с .find() или что-то еще, чтобы получить .text() первого интервала второго деления каждого jqTransformSelectWrapper

Что-то вроде:

$('.jqTransformSelectWrapper').each(function(){$(this).find(div)[0].find(span)[0].text();});

Считайте это псевдокодом, я не очень разбираюсь в jQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...