首页 > 解决方案 > 全局变量不通过函数更新

问题描述

使用给定的代码 -

var videowallwidth;
var videowallheight;
    function getPositions() {
   $.ajax({
       url: 'https://' + ipaddress + ':46272/NetAPICmd?Command=Output',
       type: 'get',
       data: '[]',
       dataType: 'jsonp',
       success: function (response1) {
           var msg1 = response1.Result;
           var testarray1 = msg1.split("\r\n");
           for (var i = 1; i <= testarray1.length - 1; i++) {
               var res = testarray1[i].split(':');
               var newRes = res;
               if (newRes[0] == "TotalSize") {
                   var ressplit = newRes[1].split('x');
                   videowallwidth = ressplit[0].trim(); 
                   videowallheight = ressplit[1].trim(); 
                  
                }
            }       
        }
    });
}

console.log(videowallwidth);

我已将videowallwidth和定义videowallheight为全局变量并在getPositions()函数内部设置它们的值,当我控制台记录函数内部的变量时,它们看起来很好并且具有正确的值。但是当我在他们显示的函数之外调用它们时"undefined",这意味着它们的值没有全局更新......我该如何解决这个问题?

标签: javascriptajax

解决方案


您可能希望在窗口对象中插入全局变量,如下所示:

window.videowallwidth = null;  //initialize as you please
window.videowallheight = null;  //initialize as you please

像这样,您应该确保它们在任何地方都可以访问

注意 ajax,这些函数是异步的,所以你应该使用回调/承诺等来管理“流”


推荐阅读