簡體   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