我做了一个ajax调用,但我不断收到这个错误:
419(未知状态)
不知道是什么原因造成的,我在其他帖子上看到它必须使用 csrf 令牌做一些事情,但我没有表格,所以我不知道如何解决这个问题。
我的电话:
$('.company-selector li > a').click(function(e) { e.preventDefault(); var companyId = $(this).data("company-id"); $.ajax({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, url: '/fetch-company/' + companyId, dataType : 'json', type: 'POST', data: {}, contentType: false, processData: false, success:function(response) { console.log(response); } }); });
我的路线:
Route::post('fetch-company/{companyId}', 'HomeController@fetchCompany');
我的控制器方法
/** * Fetches a company * * @param $companyId * * @return array */ public function fetchCompany($companyId) { $company = Company::where('id', $companyId)->first(); return response()->json($company); }
最终目标是在 html 元素中显示响应中的某些内容。
在头部使用这个:
<meta name="csrf-token" content="{{ csrf_token() }}">
并在 ajax 中获取 csrf 令牌:
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
请参考 Laravel 文档csrf_token