2017-02-06 42 views
1

我有一個使用Axios Http Client的網頁。在我的網頁中,我使用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'正在通過。 –