【问题标题】:Laravel AJAX Bootstrap Toggle Switch doesn't workLaravel AJAX Bootstrap 切换开关不起作用
【发布时间】:2021-01-27 01:41:38
【问题描述】:

我目前正在做一个 Laravel 项目。在管理视图中,我得到了用于激活/停用用户的 Bootstrap Toggle。除了我无法将复选框更改为切换之外,一切都运行良好。当我将 class="toggle-class" 更改为 data-toggle="toggle" 时,会出现切换,但数据将不再发送到数据库,因此代码将不再工作......

这就是我所拥有的

这就是我想要的

我的管理员视图

    <input id="{{$user->id}}" class="toggle-class" 
                            type="checkbox" data-onstyle="success" data-offstyle="danger" 
                            data-on="Active" data-off="Inactive" 
                            {{ $user->status ? 'checked' : '' }}
                            onclick="changeStatus(event.target, {{ $user->id }});">
    


    function changeStatus(_this, id) {
    var status = $(_this).prop('checked') == true ? 1 : 0;
    let _token = $('meta[name="csrf-token"]').attr('content');

    $.ajax({
        url: '{{route("change.status")}}',
        type: 'POST',
        data: {
            _token: _token,
            id: id,
            status: status 
        },
        success: function(data){
            if (data.type == "error") {
                $('#message').html("<div class='alert alert-danger card h2'>"+data.fail+"</div>");} 
                else {
                    $('#message').html("<div class='alert alert-success card h2'>"+data.success+" 
        </div>");
}}
    });
}

我的控制器中的方法

public function changeStatus(Request $request)
{
    $user = User::find($request->id);
    $user->status = $request->status;
    $user->save();

    return response()->json(['success'=>'Status change successfully.']);
}

不知道我做错了什么。似乎无法正常工作。

【问题讨论】:

  • 如果未选中输入,则不会随请求一起发送。
  • 也试过了,没什么变化
  • 您在dd($request-&gt;all()); 上得到了什么?选中和未选中时
  • 我还没有实现 dd($request->all());在我的代码中,它从来不需要
  • 我知道,dd 是用来调试的。我只是想看看你在请求中得到了什么

标签: javascript php ajax laravel bootstrap-switch


【解决方案1】:

我遇到了和你一样的问题,通过替换非活动和活动的地方我的问题得到了解决。

enter image description here

var status = $(this).children().prop('checked') == true ? 'active' : 'inactive';

到这一行

var status = $(this).children().prop('checked') == true ? 'inactive' : 'active';

这是我的代码

< script type = "text/javascript" >
  $(document).ready(function() {
    $('.toggle').click(function() {
      var status = $(this).children().prop('checked') == true ? 'inactive' : 'active';
      var id = $(this).children().data('id');
      $.ajax({
        type: 'POST',
        dataType: "json",
        url: 'statusUpdate',
        data: {
          'status': status,
          'id': id
        },
        headers: {
          'X-CSRF-TOKEN': '{{ csrf_token() }}'
        },
        success: function(data) {
          Swal.fire(
            'GREAT!', 'Status changed successfully', 'success')
          location.reload();
          console.log(data.success);
        }
      });
    });
  }) <
  /script>
&lt;input data-id="{{ $catego-&gt;id }}" class="toggle-class" data-toggle="toggle" data-on="Active" data-off="Inactive" data-onstyle="warning" data-offstyle="dark" type="checkbox" {{ $catego-&gt;status == 'active' ? 'checked' : '' }}&gt;

路由代码// Route::post('statusUpdate', [CategoryCRUDController::class, 'changeStatus']);

// My controller 

public function changeStatus(Request $request) { 
$category = Category::find($request->id);
$category->status = $request->status; 
$category->save(); 

return response()->json(['success'=>' status change successfully.']); }

the source code

【讨论】:

    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2018-09-03
    • 1970-01-01
    相关资源
    最近更新 更多