【发布时间】:2017-07-18 00:35:17
【问题描述】:
我的目标是使用 ajax 制作带有选择选项菜单和分页的过滤器,选择选项可在每页 10、15、20、25 个产品之间进行选择,并同时使用新记录更新 laravel 默认分页,例如 from 10 个链接到 5 个链接取决于选择选项结果。问题是我可以使用 select 选项过滤每页的产品,但我无法更新 laravel 分页记录。
//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', 'ProductController@index');
//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);
}
});
}
});
【问题讨论】:
-
你有什么错误吗?
-
不,没有错误
-
您将控件重定向到查看页面,并且再次在 ajax 中调用该控制器,因此在 ajax 重定向中不起作用,您需要检查控制器中的 $request->ajax() 跨度>
-
让我检查一下
-
不行!!
标签: php jquery ajax laravel pagination