我进行了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