Видимость переменной

Рейтинг: 0Ответов: 2Опубликовано: 13.01.2015

В общем, есть вот это:

var countries;
$(document).ready(function(){

  $(".city").keyup(function() 
  {
    var search_field = $(this).val();
    var dataString = 'searchcity='+ search_field;
    if(search_field=='')
    {
    }
    else
    {
      $.ajax({
        type: "POST",
        url: "autocomplete/search-2.php",
        data: dataString,
        dataType: 'json',
        cache: false,
        success: function(html) { countries = html;}
        //Алерт вот здесь выводит полученные данные
      });
    }
    return false;    
  });
});
// Вот здесь должна быть видна переменная **countries** содержащая в себе полученные данные
//Как это реализовать?
//А здесь алерт не выводит их

Ответы

▲ 1

Переменная countries у Вас нигде не объявлена. Сделайте её глобальной, вставьте эту строку в начало:

var countries;

UPD

Глобальную переменную использовать можете везде, путем: window.countries

UPD_2

Исходя из Вашего комментария, могу сказать, что alert(countries) надо вызывать после того, как отработает ajax запрос. Если вызвать до, то переменная будет пустая, так как не выполнилась инициализация.

Вызывать alert(countries) можно либо по событию success, либо по какому-либо действию, например нажатие кнопки.

▲ 1

Надо понимать, что если ты ее там объявишь, она не будет иметь значения. Потому что она будет вызвана, до того как сработает обработчик.