Du scheinst davon auszugehen, daß der Rechner darauf wartet, bis die Daten da sind. Das stimmt aber nicht, display = "none" und display = "block" passieren unmittelbar aufeinander, deshalb siehst Du auch nichts davon. Du müsstest das Wiedereinblenden vom tatsächlichen Eintreffen der Daten abhängig machen...
Oder den Browser dazu veranlassen mit der Skript-Ausführung wirklich zu warten, bis die Daten eingetroffen sind. Um das zu erreichen müsstest du im Aufruf der open
-Methode deiner XMLHttpRequest
-Instanz den dritten Parameter (async) auf false
setzen. Das sei nur der Vollständigkeit halber erwähnt. Die synchrone Vorgehensweise hat nämlich einige Nachteile.