Создание URL-адреса в соответствии со значениями, отправленными из нескольких блоков выбора - PullRequest
0 голосов
/ 19 ноября 2011

Я работаю на каком-то сайте электронной коммерции, где у меня есть набор фильтров для каждой категории продуктов.Фильтры отображаются в полях выбора, и каждый фильтр имеет более одного значения.

Например, если вы просматриваете категорию часов, возможны следующие фильтры: бренд (Tissot, Certina, Timex), тип движения (автоматический, механический, кварцевый), хронограф (да, нет).

Значение для каждой опции выбора представляет собой пару идентификатора фильтра и идентификатора опции фильтра, разделенных запятой.

Например:

<label for="filter-sex">Sex</label>
<select id="filter-sex" name="filter-sex">
  <option value="">All</option>
  <option value="1,1">For her</option>
  <option value="1,2">For him</option>
</select>

<label for="filter-brand">Brand</label>
<select id="filter-brand" name="filter-brand">
  <option value="">All</option>
  <option value="3,10">Tissot</option>
  <option value="3,11">Certina</option>
</select>

Я хотел бы передать эти значения в URL.

Например, если я выберу «Для нее» из упомянутого выше фильтра, мой URL должен выглядеть следующим образом: http://www.mystore.com/watches/filters-1,2/

Затем, если я выберу Tissot из фильтра бренда,URL должен выглядеть как http://www.mystore.com/watches/filters-1,2-3,10/

Есть идеи, как мне создать этот URL в соответствии с выбранными значениями?

1 Ответ

1 голос
/ 19 ноября 2011

Я предполагаю, что у вас есть кнопка, которая, когда пользователь нажимает, переводит их на URL, верно?

$('select').change(function(){
 buildURL();
});

function buildURL(){
    var baseUrl = 'http://www.mystore.com/watches/filter';
    var url = baseUrl;
    $('select').each(function(index, value){
        if(value.value != "")
            url += '-' + value.value;
    });
    $('#url').html(url);   
}

В этой версии проверьте: http://jsfiddle.net/jCq9U/

Если вы хотите сделать это на стороне сервера, это будет та же логика.

 $baseUrl = 'http://www.mystore.com/watches/filters';
 $filterSex = $_POST['filter-sex'];
 $filterBrans = $_POST['filter-brand'];

 header('Location: ' . $baseUrl . "-" . $filterSex . "-" . $filterBrand);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...