我在编写专门用于处理 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();
但没有运气:(