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

时间:2011-11-04 18:51:17

标签: jquery ajax

查看我的代码:

我正在使用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;
        }
    }

第一个输出是:

{"0":{"id":"1","title":"title","description":"comment"},"1":{"id":"2","title":"title2","description":"comment2"}}

第二个输出: 未定义

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

Jamal打破了什么?

2 个答案:

答案 0 :(得分:5)

这是因为变量:

var events;

在回调函数中初始化 - 如果放入:

,则ajax调用是异步的
console.log(events);

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

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

答案 1 :(得分:0)

这是因为传递给ajax()的函数是异步的。因此,在调用success函数之前,执行到达对console.log()的底部调用。当服务器响应您的AJAX请求时,将调用success函数。