Yajra数据表是插入jQuery的自动刷新功能



我为新订单建立了警报系统。为此,我使用类似的jQuery函数每隔三秒刷新一次div(在标题中(

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(在三秒内使用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);
}

有什么解决方案吗?

对数据表结果使用单独的方法/路由。

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

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

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

最新更新