我正在尝试创建一个从页面返回特定字符串的 ajax 函数,然后将其设置到我创建的类中。但是,当我尝试在 ajax 成功参数中调用 this.setGlideUser
时,它告诉我
object has no function setUserGlide.
当我尝试在成功参数之外调用 this.setUserGlide
,然后查看 _glideUser
的值时,_glideUser
是不明确的。这是我的代码片段。
function main()
{
this.start = true;
}
main.prototype.load = function()
{
var _glideUser;
$.ajax(
{
url: '/home',
dataType: 'text',
success: function(data)
{
// Truncated
_glideUser = unescape(data).match(pattern);
}
});
this.setGlideUser(_glideUser);
return 1;
}
main.prototype.setGlideUser(user)
{
return this._glideUser = user;
}
main.prototype.getGlideUser()
{
return this._glideUser;
}
var _main = new main();
_main.load();
// check that the ajax has completely loaded
_main.getGlideUser(); // returns undefined
我想不出在 Ajax 成功函数的主类中设置 _glideUser
变量的方法。我想在另一个函数中获取 _glideUser
的值,用它做一些事情。有什么建议么?
最佳答案
没有 this._glideUser
,因为 _glideUser
对于您的 load
函数是本地的。不要在 load
中声明 var _glideUser
,而是将其设置为构造函数中的公共(public)属性:
function main()
{
this.start = true;
this._glideUser = null;
}
(您对 setGlideUser
的第一次调用实际上会创建这样一个属性,但同时拥有这两个属性不会造成混淆吗?)
此外,正如其他人提到的,您正在尝试 setGlideUser
before 您的 ajax 操作完成。您需要从 success
回调中执行此操作:
main.prototype.load = function()
{
var that = this;
$.ajax(
{
url: '/home',
dataType: 'text',
success: function(data)
{
that.setGlideUser(unescape(data).match(pattern));
}
});
return 1; // what's the point?
}
关于javascript - 在 AJAX 请求之外设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14014735/