Yajra 数据表正在中断 jQuery 自动刷新功能

Yajra datatable is interupting jQuery auto refresh function

我已经为新订单制作了警报系统。为此,我每三秒使用 jQuery 函数刷新 div(在 header 中)

setInterval(function() {  
    $("#notification-rf1").load(location.href + " #notification-rf1");
    $("#notification-rf2").load(location.href + " #notification-rf2");
    $("#notification-rf3").load(location.href + " #notification-rf3");
}, 3000);

这在其他页面上运行良好,但在我使用 yajra 数据表的那些页面上出现问题。

三秒后刷新,那么刷新的div(3秒内使用jQuery)变为空。意味着那些 div 中的所有 html 都消失了。

我做了一些测试,发现如果我从控制器文件中删除 yajra 数据表的代码,问题就会得到解决。

控制器代码如下:

 if ($request->ajax()) {
    $data = blog_category::get();
    return Datatables::of($data)
    ->addIndexColumn()
    ->addColumn('action', function($row){
    $category = "'".$row->category."'";
    $data = '<button type="button" class="btn btn-info btn-sm" onclick="return editblogcategory('.$row->id.','.$category.');" data-bs-toggle="modal" data-bs-target="#editcategory"><i class="fa fa-pencil" aria-hidden="true"></i></button>
    <button class="btn btn-danger btn-sm" data-toggle="tooltip" data-original-title="Delete" onclick="return deleteblogcategory('.$row->id.')"><i class="fa fa-trash font-14"></i></button>';

    return $data;
    })
    ->rawColumns(['action'])
    ->make(true);
}

有什么解决办法吗?

为您的数据表结果使用单独的 method/route。

$request->ajax() 将由 $("#notification-rf1").load(location.href + " #notification-rf1"); 触发,因为它也是一个 ajax 调用

如果你想要 janky 解决方案并添加另一个条件来区分 yajra 调用和其他 ajax 调用,你可以使用输入 draw 例如,它在 yajra 的每个请求中发送。

if ($request->ajax() && $request->draw) {
    $data = blog_category::get();
    ...
}