Laravel csrf 令牌不匹配,用于 ajax POST 请求

2022-08-30 06:32:50

我正在尝试通过ajax从数据库中删除数据。

网页:

@foreach($a as $lis)
  //some code
  <a href="#" class="delteadd" id="{{$lis['id']}}">Delete</a>
  //click action perform on this link                  
@endforeach

我的ajax代码:

$('body').on('click', '.delteadd', function (e) {
e.preventDefault();
//alert('am i here');
if (confirm('Are you sure you want to Delete Ad ?')) {
    var id = $(this).attr('id');
    $.ajax({
        method: "POST",
        url: "{{url()}}/delteadd",
        }).done(function( msg ) {
        if(msg.error == 0){
            //$('.sucess-status-update').html(msg.message);
            alert(msg.message);
        }else{
            alert(msg.message);
            //$('.error-favourite-message').html(msg.message);
        }
    });
} else {
    return false;
}
});

这是我从数据库获取数据的查询...

$a = Test::with('hitsCount')->where('userid', $id)->get()->toArray();

但是当我点击删除未删除的链接数据并显示csrf_token不匹配...


答案 1

解决此问题“X-CSRF-TOKEN”的最佳方法是将以下代码添加到主布局中,并继续正常进行ajax调用:

在页眉中

<meta name="csrf-token" content="{{ csrf_token() }}" />

在脚本中

<script type="text/javascript">
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
</script>

答案 2

您必须在 ajax 请求中添加数据。我希望这将是工作。

data: {
        "_token": "{{ csrf_token() }}",
        "id": id
        }

推荐