[英]Method undefined when calling it from $ajax.success
当我从$ ajax.success回调中调用方法时,我得到的是未定义的。
var someObj = {};
someObj.someMethod = function() {
//code code
}
someObj.ajaxCall = function() {
$.ajax({
//ajax options
})
.done(function( data ) {
this.someMethod();
});
}
正如我们的好朋友斯拉克斯先生所指出的那样,您在this
方面存在范围问题
除了发布的解决方案之外,另一种解决方案可能是在回调之前保存对范围的引用:
someObj.ajaxCall = function() {
var _this = this;
$.ajax({
//ajax options
})
.done(function( data ) {
_this.someMethod();
});
}
或者,可以将context选项与$.ajax()
来控制this
值的设置:
someObj.ajaxCall = function() {
$.ajax({
context: this,
// other ajax options
})
.done(function( data ) {
this.someMethod();
});
}
您应该使用函数对象的调用方法:
someObj.ajaxCall = function() {
$.ajax({
//ajax options
})
.done(function( data ) {
someMethod.call(someObj);
});
}
在成功回调中,此对象指向未定义someMethod函数的$ ajax对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.