首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我将lat & long数据放入getJSON时,脚本不起作用

当我将lat & long数据放入getJSON时,脚本不起作用
EN

Stack Overflow用户
提问于 2018-04-11 20:51:46
回答 1查看 37关注 0票数 0

正如您可以看到的,当我尝试在我从这里获得的URL中使用变量“纬度”和“经度”(这些变量应该得到用户当前的纬度和经度)时,我的应用程序无法工作。

下面是我的代码

代码语言:javascript
复制
if (navigator.geolocation)
{
    navigator.geolocation.getCurrentPosition(function(position) {       
        var latitude = position.coords.latitude
        var longitude = position.coords.longitude
    })
}

$.getJSON("https://fcc-weather-api.glitch.me/api/current?lat=" + latitude + "&lon=" + longitude, function(json){
  var temp = json.main.temp
  var ftemp = (temp * 1.8) + 32
  var celsius = true
  var condition = json.weather[0].main
  var video;
  switch (condition)
    {
      case "Clouds":
        video = ""
        break;
      case "Rain":
        video = "https://gcs-vimeo.akamaized.net/exp=1523487613~acl=%2A%2F401800757.mp4%2A~hmac=d66772ad9d6530ff1af68ac1dc01fcf17db42cce48ff72eebf97cc2b34ec0dab/vimeo-prod-skyfire-std-us/01/2146/5/135733055/401800757.mp4"
        break;
      case "Sunny":
        video = ""
        break;        
    }    
  $("#myVideo").html("<source src='" + video + "' type='video/mp4'>")
  $("#condition").html(condition)
    $("#number").html(Math.round(temp) + "°C")
    $("#button").on("click", function(event){
    event.preventDefault()
    celsius = !celsius;
    if (celsius)
      {
        $("#number").html(Math.round(temp) + "°C")
        $("#button").html("(Switch to °F)")
      }
    else
      {
        $("#number").html(Math.round(ftemp) + "°F")    
        $("#button").html("(Switch to °C)")
      }
  })
  })

但是在我添加上面的"if部分“之前,在我尝试将变量放入URL之前,这个应用程序运行得很好,所以问题就在下面这几行中。

代码语言:javascript
复制
if (navigator.geolocation)
{
    navigator.geolocation.getCurrentPosition(function(position) {       
        var latitude = position.coords.latitude
        var longitude = position.coords.longitude
    })
}

$.getJSON("https://fcc-weather-api.glitch.me/api/current?lat=" + latitude + "&lon=" + longitude, function(json){
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-11 20:54:37

您的变量超出了范围:

代码语言:javascript
复制
if (navigator.geolocation)
{
    navigator.geolocation.getCurrentPosition(function(position) {       
        var latitude = position.coords.latitude
        var longitude = position.coords.longitude
    })
}

您需要声明该内部函数之外的变量:

代码语言:javascript
复制
var latitude, longitude;
if (navigator.geolocation)
{
    navigator.geolocation.getCurrentPosition(function(position) {       
        latitude = position.coords.latitude
        longitude = position.coords.longitude
    })
}

哦,您需要等待直到得到坐标,所以您应该将您的getJSON调用包装在一个函数中,然后在您有变量之后调用它。

代码语言:javascript
复制
navigator.geolocation.getCurrentPosition(function(position) {       
    latitude = position.coords.latitude
    longitude = position.coords.longitude
    doAjaxRequest();
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49784266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档