访问ajax请求之外的数据

时间:2017-07-03 15:05:37

标签: javascript jquery ajax

我试图通过ajax将经度和纬度调入他们自己的变量,以便我可以在请求中使用它们来制作DarkSky API。我知道它们是本地的,因此无法在ajax功能之外访问,但我无法为我的生活找到解决方法。这是我的代码:

$(document).ready(function() {

  //location API

  $("#myweather").load("window",function() {

    $("#location").fadeOut(function() {

      $.ajax({
        async: false,
        url: "https://geoip-db.com/jsonp",
        jsonpCallback: "callback",
        dataType: "jsonp",
        success: function(loc) {
          $("#location").html(loc.city)
          var long = loc.longitude
          var lat = loc.latitude
          }        
      });
    }).fadeIn();
  });      

      $("#result").load("location", function() {
        $("#result").fadeIn(function() {
          $.getJSON("https://api.darksky.net/forecast/15f8bf5641489ec32f66662221933c14/" + lat + long, function(forecast) {
            consolelog(forecast);
          });
        });
      });
});

4 个答案:

答案 0 :(得分:1)

试试这个:

lat

如果您在ajax调用之外声明long$.getJSON,它将可用于其他函数,但在{{1}时可能 被称为。

答案 1 :(得分:0)

你应该在函数之外声明这两个变量,如下所示:

$(document).ready(function() {

  //location API
    var long = '';
    var lat = '';
  $("#myweather").load("window",function() {

    $("#location").fadeOut(function() {

      $.ajax({
        async: false,
        url: "https://geoip-db.com/jsonp",
        jsonpCallback: "callback",
        dataType: "jsonp",
        success: function(loc) {
          $("#location").html(loc.city)
          long = loc.longitude
          lat = loc.latitude
          }        
      });
    }).fadeIn();
  });      

      $("#result").load("location", function() {
        $("#result").fadeIn(function() {
          $.getJSON("https://api.darksky.net/forecast/15f8bf5641489ec32f66662221933c14/" + lat + long, function(forecast) {
            consolelog(forecast);
          });
        });
      });
});

答案 2 :(得分:0)

尝试:

$(document).ready(function() {
    var long, lat;

    //location API
    $("#myweather").load("window",function() {

        $("#location").fadeOut(function() {
           $.ajax({
               async: false,
               url: "https://geoip-db.com/jsonp",
               jsonpCallback: "callback",
               dataType: "jsonp",
               success: function(loc) {
                   $("#location").html(loc.city)
                   long = loc.longitude
                   lat = loc.latitude
               }        
          });
      }).fadeIn();
  });      

    $("#result").load("location", function() {
        $("#result").fadeIn(function() {
            $.getJSON("https://api.darksky.net/forecast/15f8bf5641489ec32f66662221933c14/" + lat + long, function(forecast) {
                consolelog(forecast);
            });
        });
    });
});

然后,变量将在文档就绪函数的整个范围内可用

答案 3 :(得分:-1)

在没有var

的情况下全局声明2个变量