如何重新加载dataTable?

时间:2019-07-26 13:43:21

标签: ajax laravel datatable

我想用(table.ajax.reload();)重新加载我的数据表 使用ajax插入数据

找到用于数据的插入ajax,但重新加载dataTable显示此错误

错误数据表:

  

DataTables警告:表格ID =示例-无效的JSON响应。有关此错误的更多信息,请参见http://datatables.net/tn/1

ajax代码:

      $("#btn-add").click(function() {
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            }
        });
        $.ajax({
            type: 'POST',
            url: $('#TelegramForm').attr('action'),
            data: {
                msg: $('#msg').val(),
                governorate: $('#governorate').val(),
            },
            success: function(data) {
                if($.isEmptyObject(data.error)){
                    $('#modal-insert').modal('hide');
                    table.ajax.reload();
                }else{
                    errorsMessageOne(data.error);
                }
            },
        });
    });

dataTable的代码:

var table = $('#example').DataTable();

控制器代码:

public function store(Request $request)
{
    $validator = \Validator::make($request->all(), [
        'msg'=>'required',
        'governorate'=>'required',
    ],[],[
        'msg'=>trans('site.msgTelegram'),
        'governorate'=>trans('site.governorate')
    ]);
    if ($validator->fails())
    {
        return response()->json(['error'=>$validator->errors()->all()]);
    }
    TelegramMsg::create($request->all());
    session()->flash('success',trans('site.add'));
    return response()->json();
}

2 个答案:

答案 0 :(得分:0)

reload()期望有一个data对象提供给DataTables以便再次获取它。您可以考虑为表提供data对象并将其合并到您拥有的对象中,或者可以尝试使用row.add()函数将项目弹出到表中。您必须按照链接中的说明重新绘制表格。

最终看起来像table.row.add(data).draw();而不是table.ajax.reload();

https://datatables.net/reference/api/row.add()

答案 1 :(得分:0)

仅更改您的JS代码:

$("#btn-add").click(function() {
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            }
        });
        $.ajax({
            type: 'POST',
            url: $('#TelegramForm').attr('action'),
            data: {
                msg: $('#msg').val(),
                governorate: $('#governorate').val(),
            },
            success: function(data) {
                if($.isEmptyObject(data.error)){
                    $('#modal-insert').modal('hide');
                    if (!$.fn.dataTable.isDataTable('#example') ) {
                        $('#example').DataTable();
                    }else{
                        $("#example").DataTable().destroy();
                        $('#example').DataTable();
                    }
                }else{
                    errorsMessageOne(data.error);
                }
            },
        });
    });