javascript 在命名空间 ajax 函数回调中从另一个命名空间访问函数

javascript access function from another namespace in namespaced ajax functions callback

我的 javascript 代码需要一些帮助。我最近才开始使用名称空间,但遇到一个我无法解决的问题。

我有两个文件 data.jsthemes.js 分别在每个数据和主题上有一个命名空间。 在数据命名空间上,我有一个函数可以像这样执行 ajax 调用:

var data = data || {};data = {
    get_companies: function (id) {
        $.ajax({
            //blah blah blah
        });
    }
}

在主题命名空间中,我有一个这样的函数:

var themes = themes || {};
themes = {
    themeAdd: function () {
    //blah blah
        $.ajax({
            //blah blah
            success: function (data) {
                data.get_companies('#someid');
            }
        });
    }
}

问题是,虽然我可以从 themes.js 文件和控制台访问 data.get_companies,但当我尝试在 ajax 中调用它时回调它会产生错误(data.get_companies 不是函数)。我该如何解决这个问题以及为什么我无法在 ajax 回调中访问此函数?

在您的 ajax success 回调中更改传递给它的参数的名称:

$.ajax({
    //blah blah
    success: function (response) {
        data.get_companies('#someid');
    }
};

目前你用一个名为 data 的参数定义了一个匿名函数,所以在这个函数中 data 是 AJAX 请求收到的,而不是你的全局 data对象。

您也可以尝试这样访问它:

$.ajax({
    //blah blah
    success: function (data) {
        window.data.get_companies('#someid');
    }
};