我需要一些关于我的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');
}
};