AJAX - 从回调函数设置父对象的成员变量

时间:2013-08-29 17:52:23

标签: javascript jquery ajax callback scope

我正在开发一个Javascript图书馆,我想按照以下方式使用。

var obj = new Lib().actionOne();

此调用应填充obj中的“transcript”和“session”成员变量。 然后我想打电话:

obj.actionTwo();

将在前一次调用中使用填充的“transcript”和“session”对象。

在我的图书馆下面找。

var xmlhttp = null;

function Lib() {        
   this.transcript = null;
   this.session = null;

   return this;
} 



Lib.prototype = {

    _initRequest : function() {
        // create xmlhttp request here
    },

    _consumeService : function(callback) {
        this._initRequest();
        xmlhttp.open("GET", "THE URL", true);
        var self = this;
        xmlhttp.onreadystatechange = function(self) {
            if(xmlhttp.readyState==4 && xmlhttp.status==200 ){  
                callback.call(self);
            }
        };
        xmlhttp.send(); 
    },


    actionOne: function() {
        var connUrl = "SOME URL";   
        this._consumeService(this._actionOneCallback);      

        return this;
    },  

    _actionOneCallback : function() {
        var jsonObj = JSON.parse(xmlhttp.responseText);
        this.session = jsonObj.session
        this.transcript = jsonObj.transcript;

        this.isActionOneDone = true;
        xmlhttp = null;                 
    },

    actionTwo : function() {
        // use this.session and this.transcript
    }
}; 

问题是actionOneCallback()函数不会填充'obj'成员,虽然我通过'self'引用它。因此,当我调用'obj.actionTwo();'时,obj的成员变量是未定义的。解决方法是什么?

0 个答案:

没有答案