Javascript 在jquery get之外丢失var

Javascript 在jquery get之外丢失var,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,由于某种原因,当试图在函数外部使用get函数时,get函数中的新数据正在丢失。警报显示为0,但当我将警报放在get函数中时,它会显示80,这是它应该显示的值。有什么想法吗 var newdata = 0; //Get latest stat from file $.get( "http://localhost/?stat=size", function( data ) { //Strip any letters from result (if any) newdata = data

由于某种原因,当试图在函数外部使用get函数时,get函数中的新数据正在丢失。警报显示为0,但当我将警报放在get函数中时,它会显示80,这是它应该显示的值。有什么想法吗

var newdata = 0;
//Get latest stat from file
$.get( "http://localhost/?stat=size", function( data ) {
   //Strip any letters from result (if any)
    newdata = data.replace(/\D/g,'');
   //alert( "Load was performed."+newdata );
});
alert( "Load was performed."+newdata );

谢谢

您的变量没有丢失,jQuery get是一个异步请求。这意味着,当您发出警报时,您尚未取回数据,因此它仍将返回0

您可以将代码更改为同步运行,这将解决您的问题,但是您应该小心,因为这将阻止更多的代码执行,直到您得到响应为止

$.ajax({
         url:    'http://localhost/?stat=size', 

         success: function(data) {
                       newdata = data.replace(/\D/g,'');
                  },
         async:   false
    });     
不过,我建议只运行在get success中需要执行的操作,这意味着它只会在检索到数据后运行,不会阻止任何其他执行

var newdata = 0;
//Get latest stat from file
$.get( "http://localhost/?stat=size", function( data ) {
   //Strip any letters from result (if any)
    newdata = data.replace(/\D/g,'');
alert( "Load was performed."+newdata );
});

看看它是否能正常工作,不管它是否停止其他代码,都是基于时间的。我将functionresult更新为functiondata。非常好,谢谢你的帮助。