2016-11-25 4 views
0

Я использую Laravel 5.3 и vue.js 2.0,
И я использую AXIOS (https://github.com/mzabriskie/axios) для отправки запросов AJAX,
Я следую за документы, чтобы установить TOKEN так:Как добавить токен при использовании axios для отправки запроса ajax?

<script> 

    axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; //The error is at this line. 

    new Vue({ 
     el: "#app", 
     data: function() { 
      return { 
       items: [] 
      } 
     }, 
     mounted: function() { 
      this.$nextTick(function() { 
       axios.get('/articles').then(function (response) { 
        response.data.forEach(function (item) { 
         item.selected = false; 
        }); 
        this.items = response.data; 
       }).catch(function (error) { 

        console.log(error); 
       }); 
      }); 
     } 
    }); 
</script> 

ошибка в консоль такова:

Uncaught ReferenceError: AUTH_TOKEN is not defined 

Что мне делать?

ответ

2

у вас есть AUTH_TOKEN на окне? Если не window.AUTH_TOKEN, естественно, не будет определено.

общий набор в главе приложения Laravel является:

<script> 
    window.Laravel = <?php echo json_encode([ 
     'csrfToken' => csrf_token(), 
    ]); ?> 
</script> 

Это, следовательно, установить маркер CSRF. Я бы не подумал, что именно так вы будете устанавливать токен Auth, поэтому вам, вероятно, просто нужно будет выяснить, почему вы звоните window.AUTH_TOKEN

С точки зрения того, как вы создаете свой токен, который зависит от того, но если у вас есть это, вы можете посмотреть вместо этого на vuex для его хранения. Это позволит вам получить доступ к нему во всем приложении, не сохраняя ничего в окне.

+0

Я не знаю много о Laravel, мы должны использовать 'JSON.parse (» ")' вместо ''? –

+0

'echo json_encode()' будет преобразовывать массив php для вывода объекта JSON, чтобы он работал нормально. Проблема здесь просто заключается в том, что 'AUTH_TOKEN' нигде не устанавливается. Я дал тег скрипта больше как пример того, как глобальные js vars могут быть установлены в Laravel, если они требуют разбора на стороне сервера. – GuyC

+0

Ах! Я всегда использовал этот подход в своем последнем комментарии и никогда не думал, что выходная строка json уже является допустимым javascript object literal ... –

0

должно быть

axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').getAttribute('content') 

и вы можете удалить

<script> 
    window.Laravel = <?php echo json_encode([ 
     'csrfToken' => csrf_token(), 
    ]); ?> 
</script> 

часть