【问题标题】:Update paginator laravel in ajax在ajax中更新分页器laravel
【发布时间】:2018-04-02 06:32:47
【问题描述】:

我创建了一个页面,其中有一个带有分页器的表格。我发布了一个请求,以指定数据库中的行输出以插入到表中。但是,分页器仍然很旧。我应该如何改变它? 获取新页面请求或插入所有来自控制器的 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;

}

【问题讨论】:

  • 您可能需要提供一些代码来支持您的问题,这对我来说没有多大意义。
  • 对我来说,英语不是我的母语,抱歉。添加了我想要的代码,这样会更容易理解。

标签: ajax laravel paginator


【解决方案1】:

在 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);
    }
});

【讨论】:

  • 为了什么?我想删除视图上的旧分页并在更改表格后添加一个新分页。谢谢您的回答。
  • 啊,好吧,误解了你的问题。我已经更新了我的答案。希望对您有所帮助。
  • 我没想到会得到答案,并在 Get 的帮助下提出了请求,但我更喜欢你的选择。谢谢)
  • 我试过你的代码,但它返回一个空值给我。
  • 什么版本的 laravel?你可以试试 '''->links()'''
猜你喜欢
  • 2011-07-27
  • 1970-01-01
  • 2014-09-12
  • 2016-11-30
  • 1970-01-01
  • 2016-01-05
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多