Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 来自AJAX请求的分页无法正常工作--Laravel 5.6_Php_Jquery_Ajax_Pagination_Laravel 5.6 - Fatal编程技术网

Php 来自AJAX请求的分页无法正常工作--Laravel 5.6

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

我使用的是Laravel5.6——jQueryAjax

这就是重点

我在导航栏中放置了一个搜索输入,上面有一个eventlistener(“keyup”)

每次启动keyup时,都会向发送一个ajaxget请求

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