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();
...
}
我已经为新订单制作了警报系统。为此,我每三秒使用 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();
...
}