0

私は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);
    }

}

サーバーから値が設定されていません。どうすれば修正できますか?

4

1 に答える 1

2

ajaxのthissuccess関数はあなたのオブジェクトではありません(おそらく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);
    };

})();
于 2012-08-30T22:27:00.767 に答える