[英]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.