In genere tutte le chiamate a funzione, che dipendono da una risposta ottenuta attraverso chiamate ajax, vanno posizionate nelle callback delle chiamate stesse. Una callback è una funzione eseguita a seguito della risposta (negativa o positiva) del server
parlando di javascript puro (no librerie) l'aggiornamento degli stati di una richiesta viene gestita attraverso il metodo onreadystatechange.
Quando la proprietà readyState è uguale a 4 significa che hai completato la richiesta ed hai ricevuto una risposta dal server. La proprietà status identifica invece il tipo di risposta (200 e 304 sono risposte positive) e attraverso della semplice logica condizionale puoi eseguire funzioni diverse in base allo status
In genere è necessario prevedere anche un timeout, perchè il server potrebbe rispondere lentamente e la chiamata ajax rimarrebbe in sospeso nell'attesa di ricevere una risposta. Quindi, prima di far partire la chiamata è buona regola attivare un setTimeout che consenta di gestire lo stato dell'applicazione in caso di mancata risposta (il setTimoeut va annullato non appena ricevi risposta, ovviamente)