2015-02-05 53 views
-1

这可能是一个疯狂的愚蠢问题,但我不明白为什么东西变量没有被重置。这是我有什么:

var things = ""; 

    jQuery.get("/Users/MyName/Documents/File.txt", function(data) { 

     things = data; 

     }); 

    console.log(things) 

每当我做控制台日志内的功能,它的作品。当我将它从功能中取出时,它不起作用。我以为我在全球范围内设置这些东西,但显然不是?

+1

AJAX是异步的(这是第一个A代表的)。您的'console.log()'在请求返回之前运行 – blgt 2015-02-05 20:14:22

+0

.get是一个回调函数。所以当ajax请求返回时调用它。同时代码继续,console.log已被触发 – 2015-02-05 20:14:35

+0

嘿,非常感谢!那么我将如何实现这一点,有没有办法让我等待它完成? – Jake 2015-02-05 20:15:42

回答

-3
var things = ""; 

    jQuery.get("/Users/MyName/Documents/File.txt", function(data) { 

     things = data; 

     }).done(function() { 
     console.log(things); 
     }); 

是相同

var things = ""; 

    jQuery.get("/Users/MyName/Documents/File.txt", function(data) { 

     things = data; 
     console.log(things); 
     }); 

传递函数,如第二PARAM成$.get,它会被称为当AJAX请求是succesfull(又名状态= 200);

如果你想在外面使用它,你必须使用done()方法,并且如果成功,第二个错误和第三个总是被调用,则会调用第一个参数(函数)。