Php 来自AJAX请求的分页无法正常工作--Laravel 5.6
我使用的是Laravel5.6——jQueryAjax 这就是重点 我在导航栏中放置了一个搜索输入,上面有一个eventlistener(“keyup”) 每次启动keyup时,都会向发送一个ajaxget请求Php 来自AJAX请求的分页无法正常工作--Laravel 5.6,php,jquery,ajax,pagination,laravel-5.6,Php,Jquery,Ajax,Pagination,Laravel 5.6,我使用的是Laravel5.6——jQueryAjax 这就是重点 我在导航栏中放置了一个搜索输入,上面有一个eventlistener(“keyup”) 每次启动keyup时,都会向发送一个ajaxget请求 url : '{{action('PostController@searchAdmin')}}' 来自web.php:Route::get('/search/admin','PostController@searchAdmin) 我用数据将该操作的返回作为一个部分 return vie
url : '{{action('PostController@searchAdmin')}}'
来自web.php:Route::get('/search/admin','PostController@searchAdmin)
我用数据将该操作的返回作为一个部分
return view('back.partials.searchResult', ['posts' => $posts, 'trashed' => $trashed]);
然后我将主标签的内容替换为部分内容
除了结果计数大于10(分页断点)时,所有操作都正常工作
分页控制链接都指向“search/admin?page=x”,当我点击它时,会显示此错误
Undefined variable: posts
我使用
$posts->links()
来显示控件我找到了一个解决方案,所以我发布了它
在web.php中
Route::get('/search', function(Request $request) {
$search = $request->search;
$trashed = Post::trash()->count();
$posts = Post::notTrash()
->where('title', 'like', '%' . $search . "%")
->orWhere('post_type' , 'like', '%' . $search . '%')
->paginate(10);
$posts->withPath('?search=' . $search);
return view('back.partials.searchResult', ['posts' => $posts, 'trashed' => $trashed, 'search' => $search]);
});
此代码用于测试,不久将导出到名为SearchController的新控制器中
在我的后置控制器中
public function index(Request $request)
{
// GET parameters
$paginate = $request->input('paginate') ?? 10;
$search = $request->input('search') ?? null;
if($search !== null) {
$posts = $this->checkCategories($paginate, $search);
} else {
$posts = Post::notTrash()->orderBy('id', 'ASC')->paginate($paginate);
}
$trashed = Post::trash()->count();
$posts->withPath('?search=' . $search);
return view('back.index', ['posts' => $posts, 'trashed' => $trashed, 'search' => $search]);
}
使用
private function checkCategories($paginate, $search)
{
$categories = Category::all();
foreach ($categories as $category) {
if(strpos(strtolower($category->name), $search) === false) {
// @TODO: Change for stripos
$posts = Post::notTrash()
->where('title', 'like', '%' . $search . '%')
->orWhere('post_type', 'like', '%' . $search . '%')
->paginate($paginate);
} else {
return Category::find($category->id)->posts()->paginate($paginate);
}
}
return $posts;
}
索引方法现在接受处理get参数的请求
在我看来
@if($search !== null)
{{ $posts->appends($search)->links() }}
@else
{{ $posts->links() }}
@endif
现在替换
{{ $posts->links() }}
解决方案是
$var->**withPath()**
和处理获取参数显然$posts
变量在结果计数大于10时未初始化。您应该尝试调试使用值初始化$posts
的代码。。。我想这是因为我所有的变量都是在一个if($request->ajax())
语句中填充的。我改变了一切!它可以工作,除非我用分页更改当前页面。。。
@if($search !== null)
{{ $posts->appends($search)->links() }}
@else
{{ $posts->links() }}
@endif