全局变量 - AJAX jQuery

Global Variable - AJAX jQuery

本文关键字:jQuery AJAX 全局变量      更新时间:2023-09-26

我正在尝试设置全局变量国家代码。但该值始终为 null。我能做什么?我尝试了很多方法。请帮忙!

function GetGeolocation(){
  $.getJSON("http://ip-api.com/json/?callback=?",function(data){
  $.each(data, function(k, v) {
    table_body += "<tr><td>" + k + ": " + "</td><td><b>" + v + "</b></td></tr>";
      if (k == "countryCode")
      {
          SetGeolocation(v);
      }
    })             
  }); 
}
function SetGeolocation(value){
  countryCode = value;
  console.log(countryCode); //Value
}
function Result(){
  console.log(countyCode); //Null
}
$(document).ready(function(){
  GetGeolocation();
  Result();
});

在 JavaScript 中,在函数中声明var没有关键字的变量只有在函数调用后才会成为全局变量。

考虑一下:

function foo(){
    bar = 123;
}
// Reference error - bar is undefined
console.log(bar);

现在在测试变量bar之前,让我们调用 foo 函数。

function foo(){
    bar = 123;
}
foo();
// 123
console.log(bar);

没问题?右?好。至于你的代码,错误非常明显countryCode只是因为你以前没有调用SetGeolocation()undefined。要使其按预期工作,您需要在调用Result()之前以某种方式呼叫SetGeolocation()

但不要认真地这样做。全局变量是众所周知的不该做什么的事情。考虑将变量作为依赖项传递