Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript/jQuery中地理定位后获取JSON?_Javascript_Jquery_Json - Fatal编程技术网

如何在JavaScript/jQuery中地理定位后获取JSON?

如何在JavaScript/jQuery中地理定位后获取JSON?,javascript,jquery,json,Javascript,Jquery,Json,我正在构建一个项目,从浏览器中查找地理位置,然后使用坐标从Dark Sky API()获取数据 我可以从浏览器中获取地理位置,但是一旦获取了地理位置,就很难调用JSON对象。我知道获取地理位置是“异步”的,并且与我的其他代码同时运行,我似乎无法找到解决方法 我做错什么了吗?它似乎从未运行过:$.getJSON部分 所有的#testHTML都是供我参考的,以查看我的代码哪里出了问题#test4从不运行,但#test3运行 另外,我为我的问题隐藏了API密钥,因此url中有密钥字符。myJson变量

我正在构建一个项目,从浏览器中查找地理位置,然后使用坐标从Dark Sky API()获取数据

我可以从浏览器中获取地理位置,但是一旦获取了地理位置,就很难调用JSON对象。我知道获取地理位置是“异步”的,并且与我的其他代码同时运行,我似乎无法找到解决方法

我做错什么了吗?它似乎从未运行过:
$.getJSON
部分

所有的
#test
HTML都是供我参考的,以查看我的代码哪里出了问题
#test4
从不运行,但
#test3
运行

另外,我为我的问题隐藏了API密钥,因此url中有
密钥
字符。
myJson
变量确实连接了一个正确的url来检索JSON对象

任何帮助都将不胜感激

var myLat;
var newMyLat;
var myLong;
var newMyLong;
var myJson;
var functionCall;

$(document).ready(function() {

  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
      myLat = position.coords.latitude;
      myLong = position.coords.longitude;
      newMyLat = parseFloat(myLat).toFixed(4);
      newMyLong = parseFloat(myLong).toFixed(4);

      $("#test1").html("latitude: " + newMyLat + "<br>longitude: " + newMyLong);

      myJson =
        "https://api.darksky.net/forecast/KEY/" +
        newMyLat +
        "," +
        newMyLong;
      $("#test2").html(myJson);

      getJsonData();

    }); // end of getCurrentPosition function
  } // end of navigator.geolocation function
}); // end of document.ready function

function getJsonData() {
  $("#test3").html("getJsonData called");
  $.getJSON(myJson, function(data) {
    $("#test4").html("JSON retrieved");
  }); // end of .getJSON function
} // end of getJsonData function
var-myLat;
var newMyLat;
var myLong;
var newMyLong;
var-myJson;
var函数调用;
$(文档).ready(函数(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
myLat=位置坐标纬度;
myLong=位置坐标经度;
newMyLat=parseFloat(myLat).toFixed(4);
newMyLong=parseFloat(myLong).toFixed(4);
$(“#test1”).html(“纬度:+newMyLat+”
经度:+newMyLong); myJson= "https://api.darksky.net/forecast/KEY/" + 纽迈拉+ "," + 纽米隆; $(“#test2”).html(myJson); getJsonData(); });//getCurrentPosition函数的结尾 }//navigator.geolocation函数结束 }); // 文档结束.ready函数 函数getJsonData(){ $(“#test3”).html(“调用getJsonData”); $.getJSON(myJson,函数(数据){ $(“#test4”).html(“检索到的JSON”); });//结束.getJSON函数 }//getJsonData函数的结尾
适用于这种情况的答案:

我只需要在JSON url的末尾添加
?callback=?
,使其:

myJson = "https://api.darksky.net/forecast/ee2f66f091ed810afc3bf04adc5fa750/" + myLat + "," + myLong + "?callback=?";

谢谢你的帮助

请阅读该api的常见问题解答。它不支持CORS,您需要在服务器上使用代理来保证密钥的安全。只是看了一下,您的观点是正确的。我还尝试使用另一个API(开放天气图),但仍然不起作用。这个项目是一个在线学习课程(FreeCodeCamp),需要在CodePen上完成,是否有必要设置代理服务器?如果愿意公开您的密钥,可以使用第三方代理服务,或者只需在heroku或其他可用作代理的免费主机上创建一个简单的项目