【发布时间】:2016-07-07 09:34:58
【问题描述】:
我不熟悉 javascript 中的模块模式和闭包。我正在尝试创建一个获取 JSON 数据的模块,以便将其显示在我的网页上。
var EmailLogs = (function(){
var emailLogs = [];
var config = {};
function init(options){
for(var prop in options) {
if(options.hasOwnProperty(prop)){
config[prop] = options[prop];
}
}
setEmailLogs();
}
function setEmailLogs(){
$.ajax({
type: "POST",
headers : { "cache-control": "no-cache" },
url: "../../ajax/adminGetEmailLogs.php",
data: {options: JSON.stringify(config)},
dataType: 'json',
success: function(values){
if(values.success)
{
emailLogs = values.emailLogs;
}
}
});
}
function getEmailLogs(){
return emailLogs;
}
return{
init: init,
getEmailLogs: getEmailLogs,
}
})();
var options = {
sData : [
'email_id'
],
filters : {
user_id : 44860,
}
}
EmailLogs.init(options);
console.log(EmailLogs.getEmailLogs());
我正在尝试在运行 init 时运行 ajax 调用。然后我正在寻找要显示的 emailLogs 变量。我想是因为我的 ajax 正在异步运行,这就是为什么我之后无法获取变量的原因。如何确保 setEmailLogs() 在我运行 getEmailLogs() 之前已经运行。
【问题讨论】:
-
AJAX 是异步的。 IE。它不会同步运行。您的代码是同步的。
标签: javascript ajax closures