2017-12-18 20 views
1

私は、vueインスタンス内でcreated()に対して呼び出された簡単なメソッドgetInfo()リクエストを持っています。外部のAPIからデータを取得し、ページ上にレンダリングします。AxiosはSafariブラウザで動作しません

created() { 
    this.getInfo(); 
}, 
methods: { 
    getInfo() { 
     let vm = this; 
     let url = [my api url]; 
     axios.get(url) 
      .then(response => { 
       console.log(response); 
      }) 
      .catch(error => { 
       console.log(error); 
      }) 
    }, 

この方法はChromeで問題なく動作しますが、Safari(High Sierra、10.13.2)では完全に無視されます。これがなぜ起こっているのでしょうか?コンソールエラーはありません。

+0

簡略化されたメソッドをサポートしていないと推測されますが、スクリプトエラーが予想されます。あなたは 'getInfo:function(){...}'を試すことができます。 – Bert

+0

ネットワークタブにネットワークリクエストが表示されていますか?あなたはビルドツールを使って蒸散していますか? –

+0

@ JamesWestgate - Safariでは、最初のロードで呼び出しのためのネットワーク要求を取得しますが、手順を繰り返し実行しても表示されず、もはや呼び出されません。 Webpackによるトランスペアリング。 – slipkid

答えて

1

、このようないくつかのことを試してみては以下のコードを参照してください、この問題を解決することができました。私はAxiosコールをリファクタリングし、いくつかの新しいオプションを追加しました。キーは、axios呼び出しのURLにキャッシュバスターを追加することでした。 Safariはこれを自動的に行いません。みんな助けてくれてありがとう。

getInfo: function() { 
     let vm = this; 
     let url = let url = [my api url]; 

     axios({ 
      method: 'get', 
      url: url + '?nocache=' + new Date().getTime(), // Safari fix 
      withCredentials: true 
     }) 
      .then(response => { 
       console.log(response) 
      }) 
      .catch(error => { 
       console.log(error); 
      }) 
    }, 
-1

@Bertは彼のコメントで述べたように、メソッドのショートカットはSafariブラウザではまだサポートされていません。

[OK]を

created() { 
    this.getInfo(); 
}, 
methods: { 
    getInfo:() => { 
     let vm = this; 
     let url = [my api url]; 
     axios.get(url) 
      .then(response => { 
       console.log(response); 
      }) 
      .catch(error => { 
       console.log(error); 
      }) 
    }, 
+0

メソッドショートカットなしでまだ問題が発生しています – slipkid

+0

Vueでは、ここでは矢印関数を使用していません。これは、Vueインスタンスではなく、「this」が囲みスコープであることにつながります。 – Bert

+0

しかし、私たちは 'console.log'を使っているので、今はokです。実際はgetInfoメソッドでは、矢印関数を使いたくありません。 –

関連する問題