0

我在编写专门用于处理 Ajax 调用及其响应的类时遇到了问题。

以下代码的目的:根据数据库中存在的用户记录,我需要设置标志“isPersonalDivRequiredFlag”以供进一步使用。

// New ajax request class
function ajaxRequestHandler(){  
    this.needOutPutInJSON = 0;  
    this.url = "/libraries/ajaxHelper.php";
    this.requestType = "POST";
    this.isPersonalDivRequiredFlag = 0;
};

// Methods written for Class ajaxRequestHandler
ajaxRequestHandler.prototype = {        
        sentRequest : function(userData, typeID){
            var options = {type: this.requestType, context: this, url: this.url, data: { data: userData, type: typeID }};
            if(this.needOutPutInJSON){
                options.dataType = "json";
            }           
            // Check whether user want to see the response          
            options.success = function(rec){                
                if(rec == "1"){                                     
                    this.isPersonalDivRequiredFlag = 1;
                }                       
            };

            //Jquery Ajax
            $.ajax(options);
        },
        enableJSONoutput : function(){
            this.needOutPutInJSON = 1;          
        },      
        getFlagValue : function(){
            return this.isPersonalDivRequiredFlag;
        },
        setFlagValue : function(){
            console.log('Setflag Func called.');
            this.isPersonalDivRequiredFlag = 1;
        }
};

我使用如下代码。

var newRequest = new ajaxRequestHandler();
console.log('Before change [Value of isPersonalDivRequiredFlag variable] : ' + newRequest.getFlagValue());  // Output 0
newRequest.sentRequest({}, "recordExist");      
console.log('After change [Value of isPersonalDivRequiredFlag variable] : ' + newRequest.getFlagValue()); // Output 0

当我在 Ajax 调用的 Success 方法中将标志“isPersonalDivRequiredFlag”设置为 1 时,当它通过自己的方法“getFlagValue”函数访问时,它无法保留该值。

如果我删除 Ajax 调用函数并使其成为普通的原型方法,那么整段代码都可以正常工作。所以我知道原因但找不到任何解决方案:(

我已经尝试过什么?
我发现了一些人们在通过互联网谷歌搜索时建议的技术。
a) 在 Ajax 调用中使用了这个配置,但没有运气:(

 context:this

b) 在 Success 方法中:

var myclass = this;

并调用原型函数如下

myclass.setFlagValue();

但没有运气:(

4

0 回答 0