如何使用 ajax 解决 Laravel Post 错误 403?

How to solve Laravel Post Error 403 with ajax?

提问人:Nico Aramy 提问时间:12/14/2021 更新时间:12/15/2021 访问量:654

问:

我想将一些记录插入到使用服务器端模式的数据库表中。我使用 laravel 8,php 版本 8.0.13,数据库 mysql。

这是我的路线

use App\Http\Controllers\JabatanController;

Route::resource('jabatan', JabatanController::class, [
'names' => [
    'index' => 'jabatan.list',
    'store' => 'jabatan.store',
]]);
//dd($request->all());

我的观点

<button type="button" id="tambah-jabatan" class="btn btn-primary float-right" data-toggle="modal" data-target="#modal_tambah">
        Tambah Jabatan
    </button>
<!-- Modal -->
<div class="modal fade" id="modal_tambah" tabindex="-1" role="dialog" aria-labelledby="modalTambahLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="modalTambahLabel">Tambah Data Jabatan</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">

                <!-- mb -->
                <div class=" mb-3">
                    <label for="jabatan">Jabatan</label>
                    <input type="text" name="jabatan" class="form-control" id="jabatan" placeholder="Masukkan Jabatan disini" value="" required>
                </div>
                <!-- /mb -->
            </div>
            <div class="modal-footer">
                <button type="button" id="close" class="btn btn-secondary" data-dismiss="modal">Close</button>
                <button type="button" id="save-jabatan" class="btn btn-primary">Save changes</button>
            </div>
        </div>
    </div>
</div>

我的控制器

public function store(StoreJabatanRequest $request)
{
    $data = Jabatan::updateOrCreate([
        'jabatan' => $request->jabatan,
    ]);
    return response()->json($data);
}

我的模型

class Jabatan extends Model
{
    use HasFactory;
    protected $table = "jabatans";
    protected $fillable = [
        'jabatan'
    ];
}

我的主视图中的一些 ajax 脚本

<script>
    $('#save-jabatan').on('click', function() {
        $.ajax({
            url: "{{route('jabatan.store')}}",
            type: "post",
            data: {
                jabatan: $('#jabatan').val(),
                "_token": "{{csrf_token()}}"
            },
            success: function(res) {
                console.log(res.data);
                alert(res.text)
                $('#close').click()
                $('#tb_jabatan').DataTable().ajax.reload()
            },
            error: function(xhr) {
                alert(xhr.responseJSON.text)
            }
        })
    })
</script>

当我检查检查时,我收到了此错误

POST http://localhost:8000/jabatan 403 (禁止访问)

有什么建议吗?

AJAX Laravel-8 服务器端

评论


答:

-2赞 Nico Aramy 12/14/2021 #1

好的,所以就我而言,问题出在我的 App\Http\Request\ 上StoreJabatanRequest.php

class StoreJabatanRequest extends FormRequest;

public function authorize()
{
    return true;
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        'jabatan' => 'required'
    ];
}

评论

1赞 Community 12/15/2021
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 Brn.Rajoriya 12/16/2021
403 是与路由相关的问题。如何通过自定义请求解决它。CustomRequest 以前怎么样。你做了哪些改变?