更新ajax中的paginator laravel

时间:2018-04-02 06:32:47

标签: ajax laravel paginator

我创建了一个页面,其中有一个带有分页器的表。我发布了一个请求,指定数据库中的行输出以插入表中。然而,这个分页器仍旧。我该怎么改变它? 获取新页面的请求或插入来自控制器的所有HTML代码不满意。

代码视图:

<table class="table table-bordered text-center table-hover" id="table_list">
    <thead>
        <tr>
        <th>id</th>
        </tr>
        <tr>
            <td><input type="text" class="form-control" id="id_card" value=""></td>
        </tr>
    </thead>
    <tbody>
        @if($dats)
            @foreach($dats as $data)
                <tr>
                    <td><div class="help" data-id="{{ $data['id'] }}"> {{$data['id']}}</div></td>
                </tr>
            @endforeach
        @endif
    </tbody>
</table>
{{ $dats->links() }} // After completing the ajax, the link remains old and allows you to navigate through the old table

视图中的Js代码:

$('#id_card').on('keyup', function(){ // search
            value = $(this).val();
            $.ajax({
                type: 'POST',
                url: '/home',
                data: {
                    search: value,
                    code: 1,
                    _token: '{{csrf_token()}}'
                },
                success: function (data) {
                    $('#table_list').empty();
                    $('#table_list').append(data);  // update table 
                     //update paginator links
                },
                error: function(data){
                    console.log(data);
                }
            })
        })

代码控制器

public function search(Request $request){
$models= Model::where('table','LIKE','%'.$request->input('search').'%')->paginate(4);
$str = "";
foreach($models as $model){
    $str .= '<tr>'.
            '<td>'. $model["id"].'</td>'.
            '</tr>';
}
print($str);
return;

}

1 个答案:

答案 0 :(得分:0)

在Laravel 5中,您可以通过将控制器更改为类似的方式来实现。

public function search(Request $request){
    $models= Model::where('table','LIKE','%'.$request->input('search').'%')->paginate(4);
    $str = "";
    foreach($models as $model){
        $str .= '<tr>'.
                '<td>'. $model["id"].'</td>'.
                '</tr>';
    }

    return response()->json([
        'rows' => $str,
        'links' => $models->render()
    ], 200);

}   

在您的ajax响应中,使用$('ul.pagination').replaceWith(data.links);

呈现链接

例如

$.ajax({
    type: 'POST',
    url: '/home',
    data: {
        search: value,
        code: 1,
        _token: '{{csrf_token()}}',
        page: page
    },
    success: function (data) {
        $('#table_list').empty();
        $('#table_list').append(data.rows);  // update table 
        $('ul.pagination').replaceWith(data.links); // update links
    },
    error: function(data){
        console.log(data);
    }
});