javascript - 全局变量 - AJAX jQuery

标签 javascript jquery ajax variables global

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

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 is undefined 只是因为您之前没有调用 SetGeolocation() 。要使其按预期工作,您需要在调用 Result() 之前以某种方式调用 SetGeolocation()

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

关于javascript - 全局变量 - AJAX jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28921254/

相关文章:

android - 通过json解析构建jQuery移动页面的最佳实践

javascript - jQuery Mobile 弹出窗口未在 .popup ('open' 上打开)

javascript - 使用ajax填充选择的复选框值

javascript - "react doesn' t 存在”在 Node.js 命令提示符中

javascript - 如何删除具有相同名称但在不同时间的新 div

javascript - Angular 12 将外部脚本加载为类型模块

html - 如何在不选择选择框的情况下显示选择框选项

javascript - ajax的序列化方法不返回所需的值

jquery - 如何使我的 div ID 在 Rails 中可变?

javascript - 前缀为 "--"的 babel-node 参数未传递