我无法通过回调到jquery函数$ .getJSON()来更改HTML元素的内容

时间:2017-01-07 22:57:28

标签: javascript jquery geolocation openweathermap

我尝试将 id 属性国家/地区(即id="country")更改div元素的内容到用户所在国家&# 39;目前的立场。我的代码有什么问题吗?

function location (position){
    var a=position.coords.latitude;
    var b=position.coords.longitude;    
    $.getJSON('http://api.openweathermap.org/data/2.5/weather?lat='+a+'&lon='+b+'&APPID=b84cde4a2b80a14ecfebbd9ea7d08831&units=metric', function getData(data){
      $("#country").html(data.sys.country);
    }) 
  }

1 个答案:

答案 0 :(得分:0)

修改

值得一提的是,从Chrome 50开始,Geolocation API仅适用于HTTPS等安全上下文。

如果您的网站托管在非安全源(例如HTTP)上,则获取用户位置的请求将不再起作用。

如果您使用HTTPS,那么

<强> ORIGINAL

我猜你没有正确建立你的位置对象。

确保您有一个position对象,该对象具有一个名为coords的属性,其值为一个具有两个属性(纬度和长度)的对象。每个对象都必须用{ }

封装

它在这个片段中运行良好(原始代码不变):

&#13;
&#13;
function location(position) {
  var a = position.coords.latitude;
  var b = position.coords.longitude;
  $.getJSON('http://api.openweathermap.org/data/2.5/weather?lat=' + a + '&lon=' + b + '&APPID=b84cde4a2b80a14ecfebbd9ea7d08831&units=metric', function getData(data) {
    $("#country").html(data.sys.country);
  })
}

/* here we build our position object with a coords child object containing latitude and longitude */
var pos = {
  "coords": {
    "latitude": 34.7459360,
    "longitude": -118.2506350
  }
};

/* now we actually call the script  location(pos)  using our position object */
location(pos);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="country"></div>
&#13;
&#13;
&#13;