2014-01-27 81 views
0

我有下面的一段JavaScript代码:在全局变量无法储值JS

var ws_path = "x"; 
$.get('ws.config', function(data) { 

     ws_path = data; 
     alert(ws_path); //alert 1 
}, 
'text'); 

alert(ws_path); // alert 2 



    // output = alert 1 = value of data 
    //   alert 2 = x 

我有一个困惑”为什么它的行为就像这样?

回答

3

这是因为在内容从服务器获取ws.config文件之前alert(ws_path);被执行。您需要在get的成功函数中编写代码,以确保在获取请求后修改变量。完成$.get请求之前

jQuery.get

1

第二警报被触发。这里

0

重要的一点是:

$.get('ws.config' .... 

是一种Ajax调用的,它需要一些时间来从服务器获取的实际价值,而匿名函数有它被调用时的回调函数ajax调用收到响应。

在这里,在你的代码,如果你想拥有一个有序的情况下,你可以这样做:

var ws_path = "x"; 
$.get('ws.config', function(data) { 
    ws_path = data; 
    alert(ws_path); 
    continueScenario(); 
}, 'text'); 

function continueScenario(){ 
    alert(ws_path); 
}