如何使用 ajax 解决 Laravel Post Error 403?

Posted

技术标签:

【中文标题】如何使用 ajax 解决 Laravel Post Error 403?【英文标题】:How to solve Laravel Post Error 403 with ajax? 【发布时间】: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(禁止)

有什么建议吗?

【问题讨论】:

【参考方案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 怎么样。你做了什么改变?

以上是关于如何使用 ajax 解决 Laravel Post Error 403?的主要内容,如果未能解决你的问题,请参考以下文章

POST 500(内部服务器错误) - Ajax 和 laravel 4

PHP Laravel 4.2 ajax post返回null或空

仅在 HTTPS 中执行 ajax POST 请求时,Laravel 403 错误(生产)

Jquery:使用 laravel 的跨域 ajax 'POST'

如何在 laravel post 方法中从 ajax 中删除 403 错误

如何在 Laravel 中使用 jQuery ajax 请求自动添加 X-CSRF-TOKEN