Laravel 5.4 AJAX не работает, если добавлен CSRF_TOKEN - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь создать сайт, используя laravel 5.4.Попытка получить данные из базы данных с помощью ajax.Но если я помещаю токен csrf в вызов ajax, то иногда получаю нужные данные, а иногда - нет.Но если я не помещаю токен csrf в вызов ajax, я всегда получаю нужные данные.

Вот мой код AJAX.

 $(function(){
     var checking_html = '<img src="img/loader.gif" />';

     $("#bond").change(function () {
         $('#load').html(checking_html);
         var x = $('#bond').val();

         $.ajax({
             type: 'POST',
             url: "{{ URL::route('bond.list') }}",
             data: {
                 '_token': $('input[name=_token]').val(),
                 'x': x
             },
             success: function(response) {
                 if(response[0]['bond_num'] == 400000){
                     response[0]['bond_num']='Premium';
                 }
                 html_output = '';
                 for(i=0; i<response.length; i++){
                     html_output += '<option value="'+response[i]['publish_date']+'">'+response[i]['publish_date']+' , '+response[0]['bond_num']+' Bond</option>';
                     if(i==0){
                         html_output += '<option value="all">ALL</option>';
                     }
                 }
                 $('#choice').empty().append(html_output);
                 $('#load').html('');
             },
             error: function (jqXHR, textStatus, errorThrown){
                 alert('Error get data from ajax');
             }
         });
     });
 });

1 Ответ

0 голосов
/ 06 июля 2018

Правильный способ использования защиты CSRF в ajax: X-CSRF-TOKEN .

Вы должны добавить тег meta в заголовок шаблона.

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

После этого вы можете использовать его для передачи токена csrf в заголовок запроса, например:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...