我有一个使用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上也可以看到它。您仍然可以在回调中将其分配给它,尽管您实际上必须这样做,但是您应该在上面声明它。

09-10 02:35
查看更多