2016-11-25 169 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> 

部分