在jquery之外丢失var得到

时间:2014-02-10 11:19:37

标签: javascript jquery jquery-ui

由于某种原因,当尝试在函数外部使用时,get函数中的newdata会丢失。警报显示为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 );

由于

1 个答案:

答案 0 :(得分:0)

你的变量不会丢失,jQuery get是一个异步请求。这意味着当您提醒您尚未获得数据时,它仍将返回0.

您可以将代码更改为同步运行,这将解决您的问题,但是您应该小心,因为它会阻止任何更多的代码执行,直到您收到回复。

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

         success: function(data) {
                       newdata = data.replace(/\D/g,'');
                  },
         async:   false
    });     

但是我建议你在获得成功的过程中运行你需要做的事情,这意味着它只会在你检索到数据后才会运行,并且不会阻止任何其他执行。

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 );
});