我在html中有一个select,并希望在页面加载时通过ajax添加选项。选项值在我的数据库中,我通过调用ajax获取它们。为此,我正在用javascript编写一个类,但我在运行时无法获取数据。请看一下:
--- Main.js ---
function MyLoader() {
this._clients = null;
this._code = null;
}
Loader.prototype = {
var context = this;
loadClients: function() {
$.ajax({
url: "my/php/",
type: "POST",
data: {...},
success: function(response) {
context._clients = response;
}
});
},
getCode: function() {...}
};
然后我有以下内容:
$(document).ready(function() {
var loader = new Loader();
loader.loadClients();
alert(loader._clients);
//Here I want to add my options to the select
});
我的提醒始终返回null,我不明白为什么。我需要在课堂上保存我的数据,以便随时访问它们。
你能指出我正确的方向让我的所有东西都有效吗?谢谢你的回答。
答案 0 :(得分:1)
Loader.prototype = { // v---callback parameter
loadClients: function(callback) {
$.ajax({
url: "my/php/",
context: this, // <---set success context
type: "POST",
data: {...},
success: callback // <---pass callback
});
},
getCode: function() {...}
};
$(document).ready(function() {
var loader = new Loader();
// v---pass callback
loader.loadClients(function(response) {
this._clients = response;
alert(this._clients);
//Here I want to add my options to the select
});
});
答案 1 :(得分:0)
我相信您需要在“成功”回调中完成所有动态加载,因为它是异步加载的。
答案 2 :(得分:0)
你需要在成功回调中进行,因为它是异步的:
Loader.prototype = {
var context = this;
loadClients: function() {
$.ajax({
url: "my/php/",
type: "POST",
data: {...},
success: function(response) {
context._clients = response;
alert(loader._clients);
//Here I want to add my options to the select
}
});
},
getCode: function() {...}
};
$(document).ready(function() {
var loader = new Loader();
loader.loadClients();
});