Ajax LARAVEL 419 POST error(错误信息)
Ajax LARAVEL 419 POST error(错误信息)
我真的非常感激对此的帮助。\n我尝试了很多在这个论坛上发布的解决方案,但是仍然不能让它工作。\n我的 ajax 调用类似于:\n
$(document).ready(function() { $("#company").click(function() { $.ajax({ type: "POST", dataType:'html', url : "/company", success : function (data) { $("#result").html(data); } }); }); });
\n我通过我的路由调用了视图:\n
Route::post('/company', 'Ajaxcontroller@loadContent');
\n和控制器:\n
public function loadContent() { return view('listing.company')->render(); }
\n我的 company.blade.php 文件是这样的:\n
@foreach ($companies as $company){{$company->name}}
{{$company->streetaddress}} {{$company->postalcode}}
= $service; ?> is available on @endforeach
\n我得到了这个错误:\n
POST http://127.0.0.1:8234/company 419 (unknown status)
Ajax LARAVEL 419 POST错误的原因是在进行POST请求时没有提交csrf_token。在你的POST方法中,你必须添加这个令牌以及其他变量。
解决这个问题的方法是,在进行POST请求时,确保提交csrf_token。以下是一个示例代码,展示了如何在Ajax请求中添加csrf_token:
$.ajax({ url: 'your_post_url', type: 'POST', data: { _token: $('meta[name="csrf-token"]').attr('content'), // 其他变量 }, success: function(response) { // 请求成功的处理 }, error: function(xhr) { // 请求失败的处理 } });
在上面的代码中,`_token`是csrf_token的名称,`$('meta[name="csrf-token"]').attr('content')`用于获取页面中的csrf_token。
通过在POST请求中添加csrf_token,可以解决Ajax LARAVEL 419 POST错误。这样,你就可以成功地进行POST请求,并获取到正确的响应数据。
在使用Laravel时,经常会遇到419 POST错误,这通常与api.php和令牌授权有关。Laravel会自动生成一个CSRF“令牌”,用于验证经过应用程序管理的每个活动用户会话的身份。该令牌用于验证经过身份验证的用户是否实际上是向应用程序发出请求的用户。
解决该问题的方法有两种。一种方法是在ajax调用中添加以下代码:
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
另一种方法是在VerifyCSRF令牌中间件中排除一些URI:
protected $except = [ '/route_you_want_to_ignore', '/route_group/* ];
需要注意的是,有些人会更改meta名称属性。在我所处理的项目中,meta名称属性被重命名为_token。