簡體   English   中英

Javascript類ajax回調此

[英]Javascript class ajax callback this that

使用Javascript

var MyClass = function(){
    var that = this;
    this.bool = false;
}

MyClass.prototype.ajax = function(url, callback){
    $.ajax({
        url: url,
        success: callback
    });
}

MyClass.prototype.ajaxCall = function(){
    this.ajax("ajax.php", this.ajaxCallback);
}

MyClass.prototype.ajaxCallback = function(data){
    that.bool = true;
}

現在問題出在這里

that.bool = true;

我做了一個jsfiddle。 http://jsfiddle.net/J3P8t/

錯誤未捕獲ReferenceError:未定義

您可以擺脫that然后執行以下操作:

MyClass.prototype.ajaxCall = function(){
    this.ajax("", $.proxy(this.ajaxCallback, this)); //or this.ajaxCallback.bind(this)
}

MyClass.prototype.ajaxCallback = function(data){
    this.bool = true;
}

要么

MyClass.prototype.ajaxCall = function(){
    var self = this;
    this.ajax("your url", function(){
       self.ajaxCallback.apply(self, arguments);
    });
}

MyClass.prototype.ajaxCallback = function(data){
    console.log(data);
    this.bool = true;
}

that是在MyClass構造函數的范圍內創建的局部變量,該變量在外部不可用。 因此,訪問未聲明的變量將引發錯誤。 使用$ .proxyfunction.prototype.bind,您將上下文綁定到函數引用。 因此,在jq ajax調用中使用它會將上下文設置為MyClass實例的上下文,而不是jqxhr對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM