2015-05-09 2 views
3

У меня есть три раскрывающихся меню начальной загрузки, чтобы каждый раз отфильтровывать результаты базы данных, и я хочу, чтобы на событие клика запускался вызов Ajax. В настоящее время все работает отлично, за исключением того, что каждый раз я могу получить результат только для каждого из выпадающих списков, а не из комбинации всех 3. Я не могу понять решение, потому что с вызовом ajax я не могу получить параметры URL-адреса что мне нужно для моего следующего звонка. Я открыт для прослушивания лучшего способа сделать это, если это необходимо.Получить результаты onClick event и сохранить предыдущий параметр запроса

Некоторый код: (Примечание: Я использую рамки Laravel)

<div class="col-lg-5"> 
    <div class="btn-group dropup"> 
     <button type="button" class="btn btn-default btn-sm">Sort By Location</button> 
     <button type="button" class="btn btn-default dropdown-toggle btn-sm" data-toggle="dropdown" aria-expanded="false"> 
     <span class="caret"></span> 
     </button> 
     <ul class="dropdown-menu" role="menu"> 
     <li><a href="{{ route('properties') }}" data-location="">ALL</a></li> 
     @foreach ($allLocations as $location) 
      <li><a href="{{ route('properties') }}<?= $location->location_id ?>" data-location="<?= $location->location_id ?>">{{$location->name}}</a></li> 
     @endforeach 
     </ul> 
    </div> 
    <div class="btn-group dropup"> 
     <button type="button" class="btn btn-default btn-sm ">Sort By Agent</button> 
     <button type="button" class="btn btn-default dropdown-toggle btn-sm" data-toggle="dropdown" aria-expanded="false"> 
     <span class="caret"></span> 
     </button> 
     <ul class="dropdown-menu" role="menu"> 
     <li><a href="{{ route('properties') }}" data-agent="">ALL</a></li> 
     @foreach ($allAgents as $agent) 
      <li><a href="{{ route('properties') }}<?= $agent->person_id ?>" data-agent="<?= $agent->person_id ?>">{{$agent->lastname.' '.$agent->firstname}}</a></li> 
     @endforeach 
     </ul> 
    </div> 
    <div class="btn-group dropup"> 
     <button type="button" class="btn btn-default btn-sm ownerf" id="ownerFilter">Sort By Owner</button> 
     <button type="button" class="btn btn-default dropdown-toggle btn-sm" data-toggle="dropdown" aria-expanded="false"> 
     <span class="caret"></span> 
     </button> 
     <ul class="dropdown-menu" role="menu"> 
     <li><a href="{{ route('properties') }}" data-owner="">ALL</a></li> 
     @foreach ($allOwners as $owner) 
      <li><a href="{{ route('properties') }}<?= $owner->person_id ?>" data-ownername="<?= $owner->lastname ?>" data-owner="<?= $owner->person_id ?>">{{$owner->lastname.' '.$owner->firstname}}</a></li> 
     @endforeach 
     </ul> 
    </div> 
</div> 

и некоторые JQuery:

function updateProperties(url){ 
$.get(url) 
     .done(function(result){ 
     $data = $(result); 
     var rows = $data.find("#propertyResults > *"); 
     $('#propertyResults').fadeOut().html(rows).fadeIn(); 
     var pages = $data.find("#propertyPages > *"); 
     $('#propertyPages').empty().html(pages).fadeIn(); 
}); 

ответ

2

Что вы пытаетесь использует получения идеальной несколько фильтров поиска. Почему вы не используете checkboxes или multi-select dropdown, если вам нужны результаты всех трех комбинаций.

Пример:

Если есть три варианта. Всякий раз, когда пользователь выбирает опцию, с помощью JQuery вы можете получить значение выбранных опций

Вот пример JQuery сниппает

$('select#my_multiselect').val() 

Это возвращает массив выбранных значений. Отправьте его как json на сервер и верните результаты.

+0

Благодарим вас за ответ, я решил сделать это таким образом или с помощью формы, но я хочу избежать отправки формы. Мне нужно, когда пользователь нажимает, например, первый фильтр, для применения результатов ajax, а затем, когда нажимает на второй или третий, чтобы объединить его с предыдущим фильтром. Это плохой способ делать такие вещи? Каков наилучший способ достичь этого? – Makis

+0

Нет. То, что вы думаете, абсолютно верно. Вам не нужно отправлять форму, щелкнув по параметрам, вы можете получить значения выбранной опции и запустить вызов ajax. – Abhinav

+0

Хорошо, спасибо еще раз! Я попробую это сегодня! – Makis

Смежные вопросы