У меня есть три раскрывающихся меню начальной загрузки, чтобы каждый раз отфильтровывать результаты базы данных, и я хочу, чтобы на событие клика запускался вызов 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();
});
Благодарим вас за ответ, я решил сделать это таким образом или с помощью формы, но я хочу избежать отправки формы. Мне нужно, когда пользователь нажимает, например, первый фильтр, для применения результатов ajax, а затем, когда нажимает на второй или третий, чтобы объединить его с предыдущим фильтром. Это плохой способ делать такие вещи? Каков наилучший способ достичь этого? – Makis
Нет. То, что вы думаете, абсолютно верно. Вам не нужно отправлять форму, щелкнув по параметрам, вы можете получить значения выбранной опции и запустить вызов ajax. – Abhinav
Хорошо, спасибо еще раз! Я попробую это сегодня! – Makis