首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在datatable中获取切换开关的值

如何在datatable中获取切换开关的值
EN

Stack Overflow用户
提问于 2021-06-06 16:54:53
回答 1查看 1.1K关注 0票数 1

通过使用以下代码,我试图更新status列:

我的财务主任:

代码语言:javascript
运行
复制
   function getdata(Request $request)
{
    if(request()->ajax())
    {
        return datatables()->of(Casting::latest()->get())
            ->addColumn('action', function($data){
                $button = '<table><tr><td>';
                $button .= '<button type="button" name="edit" id="'.$data->id.'" class="edit btn btn-primary btn-sm">Modifier</button>';
                $button .= '</td><td>';
                $button .= ' <label  class="switch" >';
                $button .= '  <input type="checkbox" id="'.$data->id.'" class="switch" ';
                
                if ($data->status == 1) {

                    $button .= "checked";
                }

                $button .= '><span class="slider round"></span></label>';
                $button .= '</td></tr></table>';

                return $button;
        })
        ->rawColumns(['action'])
        ->make(true);
    }
    return view('Casting.castingss');
}



 public function changeStatus(Request $request)


    {
        $casting = Casting::find($request->id);
        $casting->status = $request->status;
        $casting->save();
  
        return response()->json(['success'=>'Status change successfully.']);
    }

我的剧本:

代码语言:javascript
运行
复制
$('#datatableRows').DataTable({

  processing: true,
  serverSide: true,
  ajax:{
   url: "{{ route('castingss.getdata') }}",
  },
  columns:[
  
   {
    data: 'casting_photo',
    name: 'casting_photo',
    render: function(data, type, full, meta){
              return "<img src={{ URL::to('/') }}/castingimages/" + data +  " class='list-thumbnail responsive border-0 card-img-left' />";
    },
    orderable: false
   },
   {data:'casting_name',
    name: 'casting_name',
    render:function(data,type,full,meta){
      return "<a href='profile'>" + data + "</a>";
    }
   },
    {
    data: 'casting_cin',
    name: 'casting_cin'
   },
    {
    data: 'casting_phone',
    name: 'casting_phone'

            },
   
   {
    data: 'action',
    name: 'action',
    orderable: false
   }
  ],
     
 });

$(document).on('change', '.switch', function(){

        var status = $(this).prop('checked') == true ? 1 : 0; 

          var id = $(this).attr('id');

            $.ajax({

            type: "GET",

            dataType: "json",

            url: '/changeStatus',

            data: {'status': status, 'id': id},

            success: function(data){

              console.log(data.success)

            }

        });

    });

当我完成任务时,我得到以下错误:"message":“从空值创建默认对象”,在我的Controller中,行:$casting->status = $request->status;

我猜状态变量没有值。如何在datatable中提取开关自定义的值,如何解决这个问题?如果你有什么主意帮我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-06 16:59:05

有两种可能性,.One是数据被接收为空,所以最好检查一旦数据传递给控制器是正确的。如果它正确地传递给转换模型的id不是there.So,那么添加验证

代码语言:javascript
运行
复制
 public function changeStatus(Request $request)
{
   $request->validate(['status'=>'required','id'=>'required']);
    $casting = Casting::find($request->id);
    if($casting){
    $casting->status = $request->status;
    $casting->save();
   return response()->json(['success'=>'Status change successfully.']);
    }
   return response()->json(['failed'=>'Status change failed.'],422);
       
    }

更新的

因为您已经将switch类名用于label以及input checkbox,所以

代码语言:javascript
运行
复制
 $button .= '  <input type="checkbox" id="'.$data->id.'" class="switch selectRow" ';

然后改变

代码语言:javascript
运行
复制
$(document).on('change', '.selectRow', function(){
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67861584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档