来自命名空间 Ajax 函数回调中另一个命名空间的 JavaScript 访问函数



我需要一些关于我的JavaScript代码的帮助。我最近才开始使用命名空间,我有一个无法解决的问题。

我有两个文件数据.js主题.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');
            }
        });
    }
}

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

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

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

目前,您定义了一个匿名函数,其中包含一个名为 data 的 arument,因此在此函数内部data是 AJAX 请求接收的内容,而不是全局data对象。

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

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

最新更新