私の目標は、ajaxを使用して選択オプションメニューとページ番号でフィルタを作成することです。選択オプションは、ページあたり10,15,20,25の製品を選択し、同時に10からの新しいレコードでlaravelのデフォルトページ付けを更新します5つのリンクへのリンクは、選択オプションの結果によって異なります。問題は、私は選択オプションでページごとに製品をフィルタリングできますが、私は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
いいえエラーはありません –
コントロールを表示ページにリダイレクトしていますが、再度コントローラをajaxで呼び出しているため、リダイレクト機能が動作していない場合はコントローラの$ request-> ajax()を確認する必要があります – sunilwananje