Laravel Ajax 请求为空

问题描述 投票:0回答:1

我有一个切换按钮,可以更改状态(显示/隐藏)。 我在 ajax 中发送正确的数据并尝试 consol 并且它显示正确的数据但是在控制器中,请求是空的。我已经添加了 CSRF 令牌,这不是令牌问题。我不知道为什么? 这是我的完整代码:

$status_btn = '<div class="form-check form-switch ps-0 bg-primary ms-auto my-auto">
            <input class="form-check-input ms-auto mt-1' . ($firmware->status == 1 ? ' bg-primary ' : '') . '" type="checkbox" data-id="' . $firmware->id . '" id="status_update" ' . ($firmware->status == 1 ? "checked" : "") . '>
                </div>';

这是我的 Jquery AJAX 代码:

$(document).on('click', '#status_update', function(e) {
            if ($(this).prop('checked')) {
                $(this).addClass('bg-primary border-2');
            } else {
                $(this).removeClass('bg-primary');
            }
            var data = {
                id: $(this).data('id'),
                status: $(this).prop('checked') == true ? 1 : 0,
            };
            var url = "{{ route('changeFirmwareStatus') }}";
            $.ajax({
                type: "POST",
                url: url,
                data: data,
                dataType: "json",
                processData: false,
                contentType: false,
                success: function(response) {
                    toastr.options = {
                        "closeButton": true,
                        "progressBar": true,
                        "showDuration": 300,
                        "timeOut": 2000,
                        "hideDuration": 1000,
                        // "preventDuplicates": true,
                    }
                    toastr[response.state](response.message);
                }
            });

        });

这是我的控制器路线:

Route::post('/changeFirmwareStatus', [FirmwareController::class, 'changeFirmwareStatus'])->name('changeFirmwareStatus');

这是我的控制器代码:

public function changeFirmwareStatus(Request $request)
{
    dd($request->all());
    $firmware = Firmware::findOrFail($request->id);

    $firmware->update(['status' => $request->status]);

    if ($firmware == true) {
        return $this->JsonResponse(200, 'success', 'Firmware Status Successfully Changed !');
    } else {
        return $this->JsonResponse(422, 'error', 'Something Went Wrong !');
    }
}

看看并指导我,(我不想要 GET 方法和查询字符串)。提前致谢

javascript php jquery ajax laravel
1个回答
0
投票

你的问题是你的ajax代码中的这两行

processData: false,
contentType: false,

这些通常在使用

FormData
时添加。但是您当前正在发送 json 数据。所以你可以删除这两行,它应该可以工作。干杯

© www.soinside.com 2019 - 2024. All rights reserved.