Laravel - 使用复选框和ajax在数据库中切换值

时间:2016-10-24 08:04:12

标签: php jquery ajax checkbox

我想通过jquery和ajax中的复选框切换表格中的布尔值。

因此,只要用户勾选复选框,就应该切换表格中的值。

到目前为止,我想出了这个,但我需要帮助:

$(document).ready(function(){
        $("input:checkbox").change(function() { 
            var isChecked = $("input:checkbox").is(":checked") ? 1:0; 
            $.ajax({
                type:'POST',
                url:'/activation',
                headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}' },
                data: $('.checkbox').serialize(),
                    success:function(data){

                    }
            });
        });
    });

4 个答案:

答案 0 :(得分:2)

我唯一要修改的就是回复ajax电话,让它知道发生了什么。

public function activation(Request $request)
{

    $user = User::findOrFail($request->user_id);

    if($user->active == 1){
        $user->active = 0;
    } else {
        $user->active = 1;
    }

    return response()->json([
      'data' => [
        'success' => $user->save(),
      ]
    ]);
}
And now in the front-end part:

$(document).ready(function(){
  $("input:checkbox").change(function() {
    var user_id = $(this).closest('tr').attr('id');

    $.ajax({
            type:'POST',
            url:'/activation',
            headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}' },
            data: { "user_id" : user_id },
            success: function(data){
              if(data.data.success){
                //do something
              }
            }
        });
    });
});

jQuery Ajax documentation

答案 1 :(得分:1)

@andre的答案是正确的,但

    if($user->active == 1){
        $user->active = 0;
    } else {
        $user->active = 1;
    }

这部分可以通过单行

完成

$user->active = !$user->active;

答案 2 :(得分:-1)

function toggleActive ()
{

  $this->active!=$this->active;
  return $this;
}

在控制器中


$model->toggleActive()->save();

答案 3 :(得分:-1)

在模型中创建方法

function toggleActive ()
{

  $this->active!=$this->active;
  return $this;
}

在控制器中


$model->toggleActive()->save();