繁体   English   中英

从$ ajax.success调用时方法未定义

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM