Javascript ajax和回调

Ajo*_*uve 2 javascript ajax callback

我真的不明白为什么我的变量未定义这是我的代码:

Calendar = function() {

    this.data;  
    this.init = function(path, callback){
        $.ajax({
            url:path,
            type:'GET',
            success:function(data){
                this.data = data;
                console.log(this.data);
                callback();
            }
        })
    }

    this.create = function(){
        this.generateYear();
    }   

    this.generateYear = function(){
        console.log(this.data); 
    }   
}
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

$(document).ready(function(){
    var calendar = new Calendar();
    calendar.init(path,function(){
        calendar.create();
    });
});
Run Code Online (Sandbox Code Playgroud)

所以第一个console.log是好的,但第二个是未定义的,我不明白为什么因为他之后被调用.

谢谢你的帮助

mik*_*ach 5

在ajax函数中设置上下文参数.试试这个:

 $.ajax({
        url:path,
        type:'GET',
        context: this,
        success:function(data){
            this.data = data;
            console.log(this.data);
            callback();
        }
    })
Run Code Online (Sandbox Code Playgroud)