Основная проблема Javascript Global Scope - PullRequest
0 голосов
/ 22 марта 2011

У меня проблемы с областью действия в Javascript.Взгляните на этот код, например:

$(function() {
    var items = "GLOBAL";

    $('.add').click(function() {            
        $.post("main/get", { 'get' : 'all' },
        function(data){
            items = String(data.result);
            items = items.split(' *** ');
            alert(items);
        }, "json");
        alert(items);
        return false;
    });

    $(".add").autocomplete({
        source: items
    });
});

Я пытаюсь заставить автозаполнение работать, и это почти так.Единственная проблема в том, что я не могу изменить элементы вне самой внутренней функции.Первое предупреждение дает мне то, что я ищу, а второе - «GLOBAL».Нижняя часть автозаполнения должна иметь доступ к ней.

Любая помощь приветствуется!

Спасибо!

1 Ответ

2 голосов
/ 22 марта 2011

Это не просто проблема объема.Поскольку ваш запрос, скорее всего, будет выполняться асинхронно (если не настроено иначе), он все равно не будет работать.Вы должны инициализировать автозаполнение в функции обратного вызова, которая вызывается после выполнения вашего AJAX-запроса:

$(function() {
    $('.add').click(function() {            
        $.post("main/get", { 'get' : 'all' },
        function(data){
            var items = String(data.result);
            items = items.split(' *** ');
            $(".add").autocomplete({
                source: items
            });
        }, "json");
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...