全局变量在ajax成功函数中没有获得值

Fel*_*elá 0 ajax jquery

看看我的代码:

我正在使用Jamal framekwork.

Event: {
        getEvents: function(){
            var events;

            $.ajax({
                type: "POST",
                url: anchor("Events/getEvents"),
                success: function(data) {   
                    if(data){
                        events = data;
                        console.log(events);
                    }
                }   
            }); 

            console.log(events);
            return events;
        }
    }
Run Code Online (Sandbox Code Playgroud)

第一个输出是:

{"0":{"id":"1","title":"title","description":"comment"},"1":{"id":"2","title":"title2","description":"comment2"}}
Run Code Online (Sandbox Code Playgroud)

第二个输出:未定义

如果var事件是Global,为什么我不能在ajax函数中设置值并获取之后的值?

贾马尔打破了什么?

Kam*_*ach 5

这是因为变量:

var events;
Run Code Online (Sandbox Code Playgroud)

在回调函数中初始化 - 如果你放入ajax调用是异步的:

console.log(events);
Run Code Online (Sandbox Code Playgroud)

在没有分配ajax调用变量之后(它将是somtime - 但你不知道什么时候) - 所有逻辑都需要在回调中.

您还可以通过设置使ajax调用同步:async : false然后您的代码应该按预期工作.