具有Laravel实现的动态Ajax过滤器



我正在尝试为电子商务创建一个侧边栏过滤器。我已经成功地实现了无限滚动分页,但现在我的过滤器有问题。

<ul class="check-box-list">
<?php $m = 1; ?>
@foreach($marchi as $marchio)
<li>
<input type="checkbox" id="m{{$m}}" class="marchio" name="{{ $marchio->id_produttore }}" data-marchio="{{ $marchio->brand->nome}}" value="{{ $marchio->brand->nome }}" />
<label for="m{{$m}}">
<span class="button"></span>
{{ $marchio->id_produttore }}<span class="count">({{ $marchio->total }})</span>
</label>   
</li>
<?php $m++; ?>
@endforeach   
</ul>

具有动态生成的上述复选框。 如果我单击其中之一,我可以使用此js触发正确的值:

<script type="text/javascript">
$('.marchio').on('click', function() {
var marchio = $('.marchio:checked').val();
$.ajax(
{
url: '?marchio=' + marchio,
type: "get",
beforeSend: function()
{
$('.ajax-load').show();
}
})
.done(function(data)
{
if(data.html == " "){
$('.ajax-load').html("No more records found");
return;
}
$('.ajax-load').hide();
$("#post-data").append(data.html);
})
.fail(function(jqXHR, ajaxOptions, thrownError)
{
alert('server not responding...');
});
});

但是,如果我单击第二个复选框,则附加到 ajax url 的值保持不变,如果我取消选中第一个,则第二个。我需要通过将同一复选框类的多个值附加到 url 来传递给 url。 如果某些分类可以有多个过滤器,我需要 ajax url 可以接受不同的 ?querystryngs,例如,一旦我们单击复选框,就会附加","分隔的值。有人可以帮助我吗?

在你的 ajax 调用中,你可以做这样的事情:

$('.marchio').on('click', function () {
var marchi = {};
$('.marchio:checked').each(function () {
marchi[$(this).attr('name')] = $(this).val();
});
$.ajax({
url: '',
type: 'get',
// This is the important part!
data: {marchi: marchi}
})
});

这将发送如下请求:

http://example.com/?marchi[name1]=value1&marchi[name2]=value2

在 PHP 中,这只是转换为数组,因此您只需在控制器中执行此操作:

foreach (Request::get('marchi') as $id_produttore => $brandNome) {
// This marchio has been selected.
}

如果要传入更多值,只需向$.ajax调用的data属性添加更多值即可。

最新更新