关于删除请求的Laravel和ajax TokenMismatchException

时间:2017-08-08 18:19:16

标签: php jquery ajax laravel

我尝试使用delete发出ajax请求。问题是,即使我向请求标头添加TokenMismatchException,我也始终会X-CSRF-TOKEN。那么任何想法我做错了什么?这是我的要求

$('#confirm-delete').click(function () {
       if(tableRowId !== -1) {
           var obj = {
               "X-CSRF-TOKEN": $('meta[name=csrf-token]').attr('content'),
               id: tableRowId
           };
           $.ajax({
               headers: {'X-CSRF-TOKEN': $('meta[name=csrf-token]').attr('content')},
               url: 'sarasas/destroy',
               method: 'DELETE', // Type of response and matches what we said in the route
               data: obj,
               success: function(response) { // What to do if we succeed
                   location.reload();
               },
               error: function(jqXHR, textStatus, errorThrown) { // What to do if we fail
                   console.log(JSON.stringify(jqXHR));
                   console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
               }
           });
           tableRowId = -1;
       }
   });

2 个答案:

答案 0 :(得分:1)

改变这个:

"X-CSRF-TOKEN": $('meta[name=csrf-token]').attr('content'),

"_token": $('meta[name=csrf-token]').attr('content'),

或者它是否工作添加此JavaScript为jQuery中的所有ajax请求设置默认值。最好是在您的应用中包含的js文件中:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
})

答案 1 :(得分:0)

在视图meta部分添加名称为 csrf-token head代码,

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta name="csrf-token" content="{{ csrf_token() }}">
    .......

然后在JS文件中添加以下代码。

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });