2013-06-24 2 views
1

У меня есть следующий код.Как получить доступ к переменной javascript вне функции

var dat = null; 

$.get("example.com", function(data){ 
    dat = data; 
    alert(dat); // Has the info. 
}); 

alert(dat); // null. 

Как я могу получить доступ к dat вне $.get?

+5

Добро пожаловать в чудесный мир ** async **! Вы не можете этого сделать. – SLaks

+0

оператор 'alert (dat)' выполняется до того, как ваш метод '$ .get()' заполняет 'dat' – Pablo

+0

Ahh, спасибо, что указали это. Для вас обоих. Что мне теперь делать с этим вопросом? – johnsnails

ответ

2

Доступ к этой переменной должен работать нормально. Проблема в том, что функция, которая устанавливает dat, будет запускаться после последнего предупреждения.

Функция является обратным вызовом .. она запускается только после того, как get имеет завершение, тогда как последнее предупреждение будет запускаться сразу.

Вот способ кодирования цепи после обратного вызова

var dat = null; 

$.get("example.com", function(data){ 
    dat = data; 
    alert(dat); // Has the info. 
}).then(function() { 
    alert(dat); // Has the info too. 
}); 
0

Линия оповещения (данных); выполняется перед $ .get(), потому что async. Используйте $ .ajax() с асинхронным: ложным или установите предупреждение (данные) в успех $ .get():

$.ajax({ 
    type: "GET", 
    async: false, 
    url: "example.com", 
    success: function(data) { 
      dat = data; 
      alert(dat); 
    }, 
    error: function(e) { 
     console.log(e); //error 
    } 
});