我有一个使用Axios Http Client的网页。在我的网页上,我使用browser's geolocation功能来获取位置。获取我的位置后,我想发送该位置以及其他数据。为此,我建立了如下数据对象:
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。
最佳答案
尝试发送变量data
时,它似乎超出范围。在示例中,您给出的数据是该关闭的局部变量,这意味着在回调完成时它会被销毁。为了解决这个问题,您需要在该函数之外声明data
,在axios上也可以看到它。您仍然可以在回调中将其分配给它,尽管您实际上必须这样做,但是您应该在上面声明它。