Bueno comentando tu problema. AJAX es asincrono ($.post usa el objeto ajax de jQuery) por eso cuando colocas la alerta, el AJAX aún no se ha terminado de procesar, porque es un proceso paralelo. Por esta razón están los callbacks (funciones) que permiten controlar este comportamiento. Una manera de evitar este comportamiento es usar esto antes del $.post
Pero ello congela el navegador hasta que no termine de realizar las operaciones. Así que es poco recomendado.
Saludos