私はモジュールパターンを新しくし、javascriptで閉じます。 JSONデータを取得するモジュールを作成しようとしていますので、Webページに表示できます。ajaxが実行された後にクロージャー関数を呼び出す
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が非同期で実行されていると推測します。そのため、後で変数を取得できないのです。 getEmailLogs()を実行する前にsetEmailLogs()が実行されたことを確認する方法を教えてください。
AJAXは非同期です。私。それは同期的に実行されません。あなたのコードは同期しています。 – Liam
[非同期呼び出しから応答を返すにはどうすればよいですか?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Liam