2016-11-25 167 views
0

我使用Laravel 5.3和vue.js 2.0
我爱可信使用(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(” <?php echo ...?>“)'而不是'<?php echo ...?>'? –

+0

'echo json_encode()'将转换php数组以输出JSON对象,所以它可以正常工作。这里的问题似乎简单地说'AUTH_TOKEN'没有被设置在任何地方。我更多地将脚本标签作为如何在Laravel中设置全局js vars的例子,如果它们需要服务器端解析的话。 – GuyC

+0

啊!我一直在我的最后一个评论中使用该方法,从来没有想过输出json字符串已经是有效的JavaScript对象字面值... –

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> 

部分