繁体   English   中英

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

[英]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');
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM