javascript 在命名空间 ajax 函数回调中从另一个命名空间访问函数
javascript access function from another namespace in namespaced ajax functions callback
我的 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 回调中访问此函数?
在您的 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');
}
};
我的 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 回调中访问此函数?
在您的 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');
}
};