Je travaille sur un planificateur d'apprentissage qui obtient ses données (langues, tâches, activités, etc.) à partir d'une base de données. Parce que j'ai besoin d'une chaîne JSON, je l'ai encodée avec json_encode
pour l'utiliser en JavaScript. J'ai une fonction différente (pour les clés, tâches, activités, etc.) qui obtient ces données et les écrit dans un tableau.Comment vérifier si la fonction javascript est prête/prête (jQuery)
function get_tasks(start_date,end_date){
maxsubtasks=0;
maxtasks=0;
$.getJSON(json_data+"?t_startdate="+start_date+"&t_enddate="+end_date, function(data) {
tasks=new Array();
$.each(data.tasks, function(i,item){
tasks[i]= new Object();
tasks[i]["t_id"]=item.t_id;
tasks[i]["t_title"]=item.t_title;
tasks[i]["t_content"]=item.t_content;
. . .
if (i > data.tasks.length) return false;
maxtasks = data.tasks.length;
if(item.t_parent > 0){
maxsubtasks++;
}
});
});
return true;
}
Tout fonctionne très bien. J'ai besoin d'aide, car je dois maintenant appeler cette fonction en $(document).ready()
. Je veux construire mon planificateur d'apprentissage seulement une fois que la fonction get_tasks()
est terminée (le tableau est rempli de données). Sinon, j'obtiendrai des erreurs.
Comment cela peut-il être résolu?
Voici ce que j'ai en $(document).ready()
:
if(get_tasks(first_day,last_day) && get_tmp_data()){ // If this function is done
// This function should be fired -- just like a callback in jQuery
init_learnplanner();
}
En note: Vous devriez créer votre objet avec 'task [i] = {t_id: item.t_id, t_title: item.t_title, ...}' ou peut-être même suffit-il de faire 'task [i ] = item'. –