2017-02-06 4 views
1

私はAxios Httpクライアントを使用しているWebページを持っています。私のウェブページでは、browser's geolocation機能を使用して自分の位置情報を取得しています。私の場所が取得されると、その場所を他のデータと共に送信したいと思います。これを行うために、私はこのようなデータオブジェクトを構築しました:Axios - ネストされたJSONオブジェクトを送信する

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

私は、このようAxiosを介してデータを送信しよう:

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

が、私は戻って、この要求から正常な応答を取得します。しかし、それは偽陽性です。ログを見ると変です。 locationプロパティが空のオブジェクトであることがわかります。だから、ブラウザでconsole.logを実行したところ、 locationが正しく設定されていることがわかります。しかし、私がFiddler経由で送るとき、私はそれがないことに気づきます。それはワイヤを横切るときに空のオブジェクトです。どうやって?

ネストされたJavaScriptオブジェクトをネットワーク経由で送信するために必要な設定があると思われます。しかし、私は何も見ません。私は間違って何をしていますか?私はこのコードで基本的なJSFiddle hereを作成しました。

答えて

1

あなたの変数dataは送信しようとしたときに範囲外になっているようです。この例では、データはそのクロージャのローカル変数です。つまり、コールバックが完了するとデータが破棄されます。これを回避するには、その機能の外にdataを宣言する必要があります。そこではAxiosにも表示されます。コールバックの内部でそれを割り当てることはできますが、実際には必要ですが、上に宣言する必要があります。

+0

可変データは有効範囲内にあります。それは私が質問をどのように表現したかによって範囲外になります。しかし、私の実際のコードでは 'axios'呼び出しは' var data'行の直後に起こります。 –

+0

'location'プロパティのみですか? 'user'と' id'は大丈夫ですか? –

+0

これは、この動作を示す 'location'プロパティだけです。 'user'と' id'は大丈夫です。 –

関連する問題