readyState озваращает всегда итоговый результат во всех браузерах одинаково. Почему бы не написать что-нибудь типа
if(xmlHttp.readyState != 0 && xmlHttp.readyState != 4)document.getElementById("div").innerHTML = "Выполняется формирование главной таблицы";
а дабы обезопасить всё-то что уже нагенерировалось пихайте данные в сессию
