Javascript 我能';t更改HTML元素';通过对jquery函数$.getJSON()的回调来调用
我正在尝试将具有id属性country(即Javascript 我能';t更改HTML元素';通过对jquery函数$.getJSON()的回调来调用,javascript,jquery,geolocation,openweathermap,Javascript,Jquery,Geolocation,Openweathermap,我正在尝试将具有id属性country(即id=“country”)的div元素的内容更改为用户当前位置的国家。我的代码有什么问题吗 function location (position){ var a=position.coords.latitude; var b=position.coords.longitude; $.getJSON('http://api.openweathermap.org/data/2.5/weather?lat='+a+'&
id=“country”
)的div元素的内容更改为用户当前位置的国家。我的代码有什么问题吗
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);
})
}
编辑
值得一提的是,从Chrome50开始,地理定位API将只在HTTPS等安全上下文中工作
如果您的站点位于非安全源(如HTTP)上,则获取用户位置的请求将不再有效
如果你使用HTTPS的话
原创
我猜你没有正确建立你的位置对象
确保您有一个位置
对象,该对象有一个名为坐标
的属性,该属性的值为具有两个属性(纬度和经度)的对象。每个对象都必须用{}
它在这个代码段中非常有效(原始代码未更改):
功能位置(位置){
var a=位置坐标纬度;
var b=位置坐标经度;
$.getJSON('http://api.openweathermap.org/data/2.5/weather?lat=“+a+”&lon=“+b+”&APPID=b84cde4a2b80a14ecfebbd9ea7d08831&units=metric”,函数getData(data){
$(“#country”).html(data.sys.country);
})
}
/*在这里,我们使用包含纬度和经度的coords子对象构建位置对象*/
var pos={
“coords”:{
“纬度”:34.7459360,
“经度”:-118.2506350
}
};
/*现在我们实际使用position对象调用脚本位置(pos)*/
位置(pos)代码>
您的Javascript看起来不错。如果添加console.log(data.sys.country)
,会发生什么?这是您期望的值吗?添加到@MachineHost的注释中。如果不起作用,请尝试记录整个返回的JSON。如果我添加console.log(data.sys.country),它会显示“数据未定义”。因此,请检查浏览器开发工具网络中的实际请求,并查看响应正文中实际返回的内容。或者手动创建同一个url,并将其放入浏览器地址bari检查了整个过程-这是完美的。唯一的故障点可能是位置
参数,因为不包括生成它的代码。也可能是location(position)
函数在脚本中从未被触发,或者链中其他地方的javascript错误阻止它触发