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

标签 javascript

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

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

我的类(class)

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

}

这些值不是从服务器设置的,我该如何修复它?

最佳答案

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

})();

关于javascript - 如何在ajax回调中使用类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12206325/

相关文章:

javascript - Webpack 4,如何将一个模块导入另一个都是入口点的模块?

javascript - Node.js 的多个 API 请求

javascript - Kinetic.js 在实例化后、添加到图层和场景后以及动画循环中更改对象的填充类型

javascript - 在 Node js "secret should be set"和 React "npm ERR! code ELIFECYCLE"中出现错误

javascript - 下拉列表在不需要的时间关闭

javascript - 使用 Firebase Cloud Functions 导出的问题

javascript - 修复 Buggy JQuery 动画

javascript - 检查点击顺序不起作用

javascript - 在 javascript 中调用 onkeyup 事件的函数以进行输入屏蔽

javascript - 通过下拉菜单修改文本框值