我的目標是使用選擇選項菜單和使用ajax進行分頁的過濾器,選擇選項可以在每頁10,15,20,25個產品之間進行選擇,並同時更新laravel默認分頁和新記錄,例如10指向5個鏈接的鏈接取決於選擇選項的結果。問題是我可以使用select選項每頁過濾產品,但我無法更新laravel分頁記錄。如何更新laravel分頁記錄取決於使用laravel和ajax選擇每個頁面的選項值?
//the select option list
<label>Show</label>
<select id="selectAmount">
<option id="tweleve" value="10" selected="selected">10</option>
<option id="fifteen" value="15">15</option>
<option id="thirty" value="20">20</option>
</select>
//the view products.blade.php
<div class="products">
<ul id="prods">
@foreach($products as $product)
<li>{{ $product->title }}</li>
<li>{{ $product->image }}</li>
<li>{{ $product->price }}</li>
@endforeach
</ul>
{{ $products->links() }}
</div>
//the partial view partials.products.php
<li>{{ $product->title }}</li>
<li>{{ $product->image }}</li>
<li>{{ $product->price }}</li>
// the route
Route::get('products', '[email protected]');
//the controller
public function index(Request $request)
{
if($request->ajax()) {
$amount = $request->input('amount');
$products = Product::paginate($amount);
$list = [];
foreach($products as $product){
$html = view('partials.prodperpage')
->with('product', $product)
->render();
$list[] = $html;
}
return response()->json($list);
}
$products = Product::paginate(9);
return view('pages.products', compact('products'));
}
//the ajax request
$('#selectAmount').change(function() {
var selected = $('#selectAmount option:selected');
var myurl = '/products';
$('#prods').empty();
if(selected.val() <= 30) {
var amount = selected.val();
$.ajax({
type: 'GET',
url: myurl,
data: {amount:amount},
success: function(data) {
$('#prods').append(data);
}
});
}
});
你得到任何錯誤? – sunilwananje
Nope沒有錯誤 –
您正在將您的控件重定向到查看頁面,並且您再次在ajax中調用該控制器,因此在ajax重定向不起作用時,您需要在控制器中檢查$ request-> ajax() – sunilwananje