ajax - 复选框上更改 ajax 的数据表不起作用
问题描述
复选框上更改 ajax 的数据表不起作用,我有一个数据表,如果单击复选框,我正在尝试将表中活动的值更新为 1,如果再次单击,则更新为 0。它甚至没有显示我插入的控制台日志,我不知道从哪里开始。预先感谢您的任何帮助
商店控制器:
public function activeswitch(){
DB::table('shops')
->update(['active'=>1]);
}
刀片.php:
<script>
$(document).ready(function () {
table = $('#shops_table').DataTable({
"processing": true,
"serverSide": true,
"ajax": "{{url('api/admin/shops/get-shops')}}",
rowId: "id",
stateSave: true,
dom: 'Bfrtip',
"buttons": [
'excelHtml5',
'pdf',
'print'
],
"order": [[ 0, "desc" ]],
columns: [
{data: 'id'},
{data: 'name'},
{data: 'image', render: function(data){
return "<img src='/storage/uploads/logo/" + data + "' width=auto height='50' />"
}},
{data: 'color'},
{data: 'switch', render: function(data){
return '<label class="switch">' +
' <input type="checkbox" class="checkbox">' +
'<span class="slider round" data-active-value=0>' +
' </span>' +
' </label>';
}},
{data: 'id', 'width' : '10%', render: function(data){
return '<div class="action-buttons">' +
'<a href="shops/'+data+'/" class="btn btn-xs btn-rounded btn-default m-r-xs"><i class="fa fa-eye"></i></a>' +
'<a href="shops/'+data+'/edit" class="btn btn-xs btn-rounded btn-default m-r-xs"><i class="fa fa-pencil"></i></a>' +
' <form action="shops/'+data+'" method="POST" style="display: inline-block;">' +
'<input type="hidden" name="_method" value="DELETE" />' +
' @csrf' +
'<button class="btn btn-xs btn-rounded btn-danger" type="submit"><i class="fa fa-trash"></i></button>' +
' </form>' +
'</div>';
}}
],
});
});
$( document ).ready(function() {
$(".checkbox").change(function(e){
console.log('hi')
e.preventDefault();
var selct_ = $(this) //declare this
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "{{ route('active.switch') }}",
data:{
'active':$(this).data('active-value')
},
type: "get",
success: function(result){
console.log('hi')
}
});
});
});
</script>
解决方案
它不起作用,因为您正在向尚不存在的元素添加侦听器。
Datatables.js 有一个回调,一旦绘制就运行,试试这个:
$(document).ready(function () {
table = $('#shops_table').DataTable({
"processing": true,
"serverSide": true,
"ajax": "{{url('api/admin/shops/get-shops')}}",
rowId: "id",
stateSave: true,
dom: 'Bfrtip',
"buttons": [
'excelHtml5',
'pdf',
'print'
],
"order": [[ 0, "desc" ]],
columns: [
{data: 'id'},
{data: 'name'},
{data: 'image', render: function(data){
return "<img src='/storage/uploads/logo/" + data + "' width=auto height='50' />"
}},
{data: 'color'},
{data: 'switch', render: function(data){
return '<label class="switch">' +
' <input type="checkbox" class="checkbox">' +
'<span class="slider round" data-active-value=0>' +
' </span>' +
' </label>';
}},
{data: 'id', 'width' : '10%', render: function(data){
return '<div class="action-buttons">' +
'<a href="shops/'+data+'/" class="btn btn-xs btn-rounded btn-default m-r-xs"><i class="fa fa-eye"></i></a>' +
'<a href="shops/'+data+'/edit" class="btn btn-xs btn-rounded btn-default m-r-xs"><i class="fa fa-pencil"></i></a>' +
' <form action="shops/'+data+'" method="POST" style="display: inline-block;">' +
'<input type="hidden" name="_method" value="DELETE" />' +
' @csrf' +
'<button class="btn btn-xs btn-rounded btn-danger" type="submit"><i class="fa fa-trash"></i></button>' +
' </form>' +
'</div>';
}}
],
"fnDrawCallback": function() {
$(".checkbox").change(function (e) {
console.log('hi')
});
}
});
});
推荐阅读
- excel - 删除多个工作表上的行
- javascript - 我应该如何处理要删除的对象的事件处理程序?
- plane - 激光雷达数据的 Ransac 地平面分割
- kubernetes - 在私有子网中运行时 AWS EKS 上的 DNS 问题
- android - 如何在 Proguard 中保留 TypeDef?
- html - 如果没有足够的可用空间,则隐藏特定的单词(仅限 CSS)
- c++ - 无法渲染模型 - (glfw / assimp)
- r - 在 R 中运行并行计算时如何在工作人员上设置 .libPaths(检查点)
- python-3.x - Windows 上通过 CMD 安装 Pyaudio 问题
- python - Django - 如何将 DeleteView 限制为对象所有者