看看我的代码:
我正在使用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函数中设置值并获取之后的值?
贾马尔打破了什么?
这是因为变量:
var events;
Run Code Online (Sandbox Code Playgroud)
在回调函数中初始化 - 如果你放入ajax调用是异步的:
console.log(events);
Run Code Online (Sandbox Code Playgroud)
在没有分配ajax调用变量之后(它将是somtime - 但你不知道什么时候) - 所有逻辑都需要在回调中.
您还可以通过设置使ajax调用同步:async : false然后您的代码应该按预期工作.