使用分页进行Ajax搜索[Laravel]

时间:2015-01-15 17:38:11

标签: ajax laravel pagination

我已经阅读https://gist.github.com/tobysteward/6163902和& AJAX pagination with Laravel但似乎无论如何我都有不同的问题。

长话短说:当我搜索时,获取正确的数据并且ajax工作"显示数据,不刷新"仅针对第一页,但是从页面上的下一页刷新,那么如何进行ajax调用以循环返回的数据并根据每个页面显示它?

此外,如何将搜索查询添加到网址,目前在获取数据时,网址不会更新,而是保持其当前状态(即index?page=3)。

搜索表单

{{ Form::open(['route' => 'search', 'method' => 'GET', 'id' => 's-form',])}}
    {{ Form::text('search', null, ['id' => 'search', 'placeholder' => 'Search For ...']) }}
    {{ Form::submit(Go) }}
{{ Form::close() }}

搜索控制器

public function search() {

    $input = Input::get('search');
    $posts = Post::where('title','LIKE',$input)->paginate(4);

    if (Request::ajax()) {
        return View::make('posts.search')->withPosts($posts);
    }
    return View::make('posts.index')->withPosts($posts);
}

搜索视图

@forelse ($posts as $post)
        // do stuff
@endforeach
<nav>{{ $posts->appends(Request::except('page'))->links() }}</nav>

js

$('#s-form').submit(function(e)
{
    e.preventDefault();
    $.ajax({
        url: $(this).attr('action'),
        data:{
            search: $('#search').val()
        },
        success: function(data){
            $('#result').html(data);
        }
    });
});

1 个答案:

答案 0 :(得分:2)

这就是所需要的:

$(document).ajaxComplete(function() {
    $('.pagination li a').click(function(e) {
        e.preventDefault();
        var url = $(this).attr('href');
        $.ajax({
            url: url,
            success: function(data) {
                $('#result').html(data);
            }
        });
    });
});

现在我只需要根据每个页面更新URL。