如何解决在选择框中使用ajax对产品进行排序
我想使用带有 ajax 的选择框对产品进行排序。但是产品不会显示,我不知道如何修复它。我认为这可能是 URL 问题(或者更多),但我不知道。 这是我的完整代码:
查看
<form name="sortProducts" id="sortProducts">
<input type="hidden" name="url" id="url" value="{{ route('men') }}">
<select id="sort" name="sort">
<option value="product_relevance" @if (request()->sort == "product_relevance") selected @endif>Relevance</option>
<option value="product_price_low_high" @if (request()->sort == "product_price_low_high") selected @endif>Price: Low to High</option>
<option value="product_price_high_low" @if (request()->sort == "product_price_high_low") selected @endif>Price: High to Low</option>
<option value="product_latest" @if (request()->sort == "product_latest") selected @endif>Latest Arrivals</option>
</select>
</form>
<div class="filter_products col-9">
<-- list products -->
</div>
脚本
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
$("#sort").on('change',function(){
var sort = $(this).val();
var url = $('#url').val()
$.ajax({
url: url,method: "post",data: {sort:sort,url:url},success: function(data){
$('.filter_products').html(data);
}
})
});
控制器
if($request->ajax()){
$data = $request->all;
$products = new Product();
$products = $products->where('gender_id','=',1);
// sorting product
if ($data['sort'] == "product_price_low_high") {
$products->orderBy('productprice','asc');
} elseif ($data['sort'] == "product_price_high_low") {
$products->orderBy('productprice','desc');
} elseif ($data['sort'] == "product_latest") {
$products->orderBy('products.id','desc');
} elseif ($data['sort'] == "product_relevance") {
$products;
}
return view('menpage/men',compact('products'));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。