查看我的代码:
我正在使用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打破了什么?答案 0 :(得分:5)
这是因为变量:
var events;
在回调函数中初始化 - 如果放入:
,则ajax调用是异步的console.log(events);
在没有分配ajax调用变量之后(它将是somtime - 但你不知道什么时候) - 所有逻辑都需要在回调中。
此外,您可以通过设置async : false
使ajax调用同步,然后您的代码应该按预期工作。
答案 1 :(得分:0)
这是因为传递给ajax()的函数是异步的。因此,在调用success函数之前,执行到达对console.log()的底部调用。当服务器响应您的AJAX请求时,将调用success函数。