基本Javascript全局范围问题

时间:2011-03-22 02:13:41

标签: javascript jquery scope

我在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
    });
});

我正在尝试自动完成工作,而且几乎就是这样。唯一的问题是我似乎无法更改最内层功能之外的项目。第一个警报给了我正在寻找的东西,但第二个警报给了我“全球”。底部自动完成部分必须能够访问它。

感谢任何帮助!

谢谢!

1 个答案:

答案 0 :(得分:2)

这不仅仅是一个范围问题。由于您的请求很可能异步发生(除非另有配置),因此无论如何都不会以这种方式工作。你必须在回调函数中初始化自动完成,一旦你的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");
    });
});