【问题标题】:How to solve Laravel Post Error 403 with ajax?如何使用 ajax 解决 Laravel Post Error 403?
【发布时间】:2022-01-17 18:17:16
【问题描述】:

我想在使用服务器端模式的数据库表中插入一些记录。我使用的是 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 server-side


    【解决方案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'
        ];
    }
    

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    • 403 是路由相关问题。您如何通过自定义请求解决它。以前的 CustomRequest 怎么样。你做了什么改变?
    猜你喜欢
    • 2023-03-10
    • 2022-10-09
    • 2020-01-29
    • 1970-01-01
    • 2018-08-21
    • 2019-04-10
    • 2018-11-02
    • 2017-03-31
    • 2019-02-27
    相关资源
    最近更新 更多