2017-12-18 4 views
1

Ich habe eine einfache Methode getInfo() Anfrage, die in der Vue-Instanz created() aufgerufen wird. Er greift Daten von einer externen API und rendert sie auf der Seite.Axios GET funktioniert nicht im Safari-Browser

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); 
      }) 
    }, 

Die Methode funktioniert in Chrome einwandfrei, wird aber in Safari vollständig ignoriert (High Sierra, 10.13.2). Irgendwelche Ideen, warum dies passieren könnte? Keine Konsolenfehler

+0

Nur raten wäre, dass es nicht die Methode Stenografie unterstützt, aber ich hätte etwas Skriptfehler erwartet. Sie könnten 'getInfo: function() {...}' versuchen. – Bert

+0

Wird auf der Registerkarte Netzwerk eine Netzwerkanforderung angezeigt? Transpilieren Sie mit einem Build-Tool? –

+0

@JamesWestgate - In Safari erhalte ich nur eine Netzwerkanforderung für den Anruf beim ersten Laden, aber wenn ich die Schritte erneut durchführe, erscheint sie nicht und wird nicht mehr aufgerufen. Transpiling mit Webpack. – slipkid

Antwort

1

Ok konnte das Problem beheben, Code siehe unten. Ich habe den Axios-Aufruf überarbeitet und einige neue Optionen hinzugefügt. Der Schlüssel war, einen Cache-Buster zur URL im Axios-Aufruf hinzuzufügen. Safari macht das nicht automatisch. Danke für die Hilfe an alle.

-1

Wie @Bert in seinem Kommentar erwähnt, Methodenverknüpfungen werden noch nicht von Safari-Browser unterstützt.

soetwas wie diese versuchen,

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

Problem tritt immer noch ohne die Methode Verknüpfung – slipkid

+0

In Vue, definitiv * nicht * verwenden Sie eine Pfeil-Funktion hier. Dies führt dazu, dass "dies" der umschließende Bereich und nicht die Vue-Instanz ist. – Bert

+0

Aber wir verwenden nur 'console.log', also ok für den Moment ... eigentlich wollen wir auf der Methode getInfo keine Pfeilfunktion verwenden. –

Verwandte Themen