【发布时间】:2014-07-07 12:08:19
【问题描述】:
我正在尝试在 javascript 中创建一个数据库处理程序类。我想通过简单地使用来调用类:
var databaseHandler = new DatabaseHandler();
result = databaseHandler.getResult("SELECT * FROM login");
我已经创建了类,并为 ajax 函数使用了回调(以便等待返回 ajax 结果)。但是我仍然收到“未定义”作为我的结果。如果我在 onComplete 函数中使用 console.log(a),我会得到一个预期结果的数组。
(function(window){
//Database class
function DatabaseHandler(){
//Query
this.query = function(query, whenDone){
request = $.ajax({
url: "../optiMizeDashboards/php/DatabaseQuery.php",
type: "POST",
data: {query : query},
dataType: "JSON"
});
request.done(function(output) {
whenDone(output);
});
request.fail(function(jqXHR, textStatus) {
console.log(textStatus);
});
};
//Get result
this.getResult = function(query){
this.query(query, this.onComplete);
};
//Ajax callback
this.onComplete = function(a){
return a;
};
}
//Make available to global scope
window.DatabaseHandler = DatabaseHandler;
}(window))
我的问题是:这与变量范围或 ajax 的工作方式有关吗?我已经阅读了所有解释 ajax 是 ASYNC 的答案,我认为我已经通过使用回调函数“onComplete”处理了这个问题
我们将不胜感激有关此主题的任何帮助!
【问题讨论】:
-
你没有正确实现回调系统
标签: javascript jquery ajax oop