我的javascript代码需要一些帮助。我刚刚开始使用名称空间,我遇到了一个无法解决的问题。
我有两个文件 data.js 和 themes.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回调中访问此函数?
答案 0 :(得分:1)
在你的ajax success
回调中,改变传递给它的参数的名称:
$.ajax({
//blah blah
success: function (response) {
data.get_companies('#someid');
}
};
目前您使用名为data
的arument定义匿名函数,因此在此函数data
内部是AJAX请求所接收的内容,而不是您的全局data
对象。< / p>
您也可以尝试像这样访问它:
$.ajax({
//blah blah
success: function (data) {
window.data.get_companies('#someid');
}
};