在一个JS类中,一个AJAX成功的回调一直在返回Uncaught TypeError,但方法被定义了,我也不知道是怎么回事[重复]。

问题描述 投票:0回答:1

我正在进行一个成功的AJAX调用,并返回数据,但我一直得到的是 sortable.class.js:50 Uncaught ReferenceError: buildTabs is not defined 在成功处理中,我却想不出问题出在哪里。

有谁看出这有什么问题吗?

实例化并调用

const sortable = new Sortable();

sortable.v2Test();

课堂(缩短)

class Sortable {
    constructor() {}

    v2Test() {
        this.v2Tabs();
    }

    buildTabs(dataset) {
        console.log('working');
    }

    v2Tabs() {
        $.ajax({
            type: 'GET',
            url: '/v2/tabs',
            contentType: 'application/json',
            success: function (data) {
                buildTabs(data);
            },
        });
    }
}

=====带传入函数的工作版本 =====

    this.v2Icons(1, 'tab1', this.processIcons); //call

    v2Icons(tab, targetElement, callback) {
        $.ajax({
            type: 'GET',
            url: '/v2/icons/' + tab,
            contentType: 'application/json',
            success: function (data) {
                callback(targetElement, data.icons, data.maxrow);
            },
        });
    }

    processIcons(targetElement, dataset, maxrow) {
        // do the shizzle
    });

javascript jquery ajax callback
1个回答
1
投票

success 函数没有对父对象方法的引用,为了解决这个问题,你可以使用 箭头功能 默认情况下,它与父体绑定。

class Sortable {
    constructor() {}

    v2Test() {
        this.v2Tabs();
    }

    buildTabs(dataset) {
        console.log('working');
    }

    v2Tabs() {
        $.ajax({
            type: 'GET',
            url: '/v2/tabs',
            contentType: 'application/json',
            success: (data) => {
                this.buildTabs(data);
            },
        });
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.