如何在ajax回调中使用类变量?

时间:2012-08-30 22:14:05

标签: javascript

我是javascript的新手,我想知道如何在我的ajax回调中访问我的类变量

success: function(data) {
            var obj = jQuery.parseJSON(data);
            this.baralho = obj.countBaralho;

我的班级

var Placar = {
    descarte : 0,
    jogador1: 0,
    jogador2: 0,
    baralho: 0,

    fetchFromServer: function(){
        $.ajax({
            url: baseUrl+'get-placar',
            success: function(data) {
                var obj = jQuery.parseJSON(data);
                this.baralho = obj.countBaralho;
                this.descarte = obj.countDescarte;
                this.jogador1 = obj.numCartas1;
                this.jogador2 = obj.numCartas2;
            }
        });

    },

    update: function() {
        $('#num-cartas-1').html(this.jogador1);
        $('#num-cartas-2').html(this.jogador2);
        $('#cartas-restantes').html(this.baralho);
        $('#num-cartas-descarte').html(this.descarte);
    }

}

未从服务器设置值,我该如何解决?

1 个答案:

答案 0 :(得分:2)

ajax的成功函数中的this不是你的对象(可能是XMLHttpRequest对象)。

我会使用构造函数来创建对象而不是对象文字,并创建一个闭包以便能够在任何上下文中访问该对象。

var Placar = new (function(){
    this.descarte = 0;
    this.jogador1 = 0;
    this.jogador2 = 0;
    this.baralho = 0;
            var self = this;        
    this.fetchFromServer = function(){
        $.ajax({
            url: baseUrl+'get-placar',
            success: function(data) {
                var obj = jQuery.parseJSON(data);
                self.baralho = obj.countBaralho;
                self.descarte = obj.countDescarte;
                self.jogador1 = obj.numCartas1;
                self.jogador2 = obj.numCartas2;
            }
        });

    };

    this.update = function() {
        $('#num-cartas-1').html(self.jogador1);
        $('#num-cartas-2').html(self.jogador2);
        $('#cartas-restantes').html(self.baralho);
        $('#num-cartas-descarte').html(self.descarte);
    };

})();