laravel 419状态码(未知状态)

时间:2018-08-26 05:16:54

标签: ajax

我进行了ajax调用,但不断出现此错误:

419 (unknown status)

我包含在元标记中:

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

我的桌子(无表格):

 <table class="table" id="dataTables">
                    <thead>
                    <tr>
                        <td>Full nametd>
                        <td class="text-center">Lớp</td>
                        <td class="text-center"><input type="checkbox" id="select_all"></td>
                    </tr>
                    </thead>
                </table>

我使用DataTables库从Controller加载所有数据:

var table = $('#dataTables').DataTable({
            "pagingType": "full_numbers",
            "processing": true,
            "serverSide": true,
            "lengthMenu": [[5, 10, -1], [5, 10, "All"]],
            "iDisplayLength": 5,
            "ordering": false,
            "ajax": '{!! url(Request::segment(1).'/lists?class_id='.Input::get('class_id')) !!}',
            'createdRow': function (row, data, dataIndex) {
                $(row).attr('id', data.id);
            },
            "columns": [
                ...
                {
                    "data": "id", "sClass": "text-center",
                    "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
                        $(nTd).html("<input type='checkbox' name='check[]' value='" + oData.id + "'>");
                    }
                },
            ],
            "language": {
                "url": "{{url('public/extension/datatables/vietnamese.json')}}"
            }
        });

我的Ajax:

$('#save').click(function () {
            $.ajax({
                type: 'POST',
                url: "{{url('class/store')}}",
                cache: false,
                data: {"check": sThisVal }, //sThisVal get all input checkbox checked
                success: function (r) {
                    $('#msg').html(r);
                },
                error: function (jqXHR, text, errorThrown) {
                    $('#msg').html(jqXHR + " " + text + " " + errorThrown);
                }
            });
        });

我的路线:

Route::post('class/lists', 'ClassController@lists');

我的控制器方法

public function store(Request $request){
    var_dump($request->all());exit;
}

点击提交后的结果为空???

3 个答案:

答案 0 :(得分:0)

除了将crsf-token值放在标头元数据中外,您还需要使用类似以下内容将其传递到AJAX请求中:

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

这来自:https://laravel.com/docs/5.6/csrf#csrf-x-csrf-token

答案 1 :(得分:0)

我在我的Ajax的数据部分中添加了crsf令牌,它对我来说就像是一种魅力。

 $('#save').click(function () {
            $.ajax({
                type: 'POST',
                url: "{{url('class/store')}}",
                cache: false,
                data: {
                       "check": sThisVal, 
                       "_token": "{{ csrf_token() }}",
                }, //sThisVal get all input checkbox checked
                success: function (r) {
                    $('#msg').html(r);
                },
                error: function (jqXHR, text, errorThrown) {
                    $('#msg').html(jqXHR + " " + text + " " + errorThrown);
                }
            });
        });

希望有帮助

答案 2 :(得分:0)

有时候您要做的就是使方法像下面这样写大写