2017-02-06 12 views
1

Ich habe eine Webseite, die den 0ttHttp Client verwendet. Auf meiner Webseite erhalte ich mit der Funktion browser's geolocation meinen Standort. Wenn mein Standort erreicht ist, möchte ich diesen Standort zusammen mit anderen Daten senden. Dazu habe ich Datenobjekt wie folgt aufgebaut:Axios - verschachteltes JSON-Objekt senden

navigator.geolocation.getCurrentPosition(
    function(position) { 
    var data = { 
     id: 1, 
     user:'me', 
     location: position 
    }; 
    }) 
; 

ich dann versuchen, die Daten über Axios wie folgt an:

axios.put('/my-endpoint', data, options) 
    .then(function(res) { 
     console.log('success'); 
     console.log(res); 
    }) 
;  

erhalte ich eine erfolgreiche Antwort zurück von dieser Anfrage. Es ist jedoch ein falsches positives Ergebnis. Wenn ich mir die Protokolle anschaue, ist das komisch. Ich kann sehen, dass die location Eigenschaft ein leeres Objekt ist. Also, ich habe eine console.log im Browser und ich kann sehen, dass location richtig eingestellt ist. Aber wenn ich es über Fiddler sende, merke ich, dass es nicht da ist. Es ist nur ein leeres Objekt, wenn es über den Draht geht. Wie?

Ich vermute, es gibt eine Einstellung oder etwas anderes, was ich tun muss, um ein verschachteltes JavaScript-Objekt über das Netzwerk zu senden. Aber ich sehe nichts. Was mache ich falsch? Ich habe eine grundlegende JSFiddle here mit diesem Code ..

Antwort

1

Es sieht aus wie Ihre Variable data ist außerhalb des Geltungsbereichs, wenn Sie versuchen, es zu senden. In dem Beispiel, in dem Sie Daten angegeben haben, handelt es sich um eine lokale Variable dieses Abschlusses, was bedeutet, dass sie beim Abschluss des Callbacks zerstört wird. Um dies zu umgehen, müssen Sie data außerhalb dieser Funktion deklarieren, wo es auch für Axios sichtbar ist. Sie können es zwar innerhalb des Callbacks zuweisen, müssen Sie aber tatsächlich, aber Sie sollten es oben deklarieren.

+0

die variablen Daten sind im Geltungsbereich. Es sieht außerhalb des Umfangs aus, weil ich die Frage formuliert habe. Aber in meinem tatsächlichen Code passiert der Axios-Aufruf direkt nach der var data-Zeile. –

+0

Ist es nur für die "location" -Eigenschaft? Sind "user" und "id" okay? –

+0

Nur die Eigenschaft 'location' zeigt dieses Verhalten. 'user' und' id' gehen durch ok. –