Estimado, a mi me pasó una vez en un archivo.
Le explico por que sucede.
Cuando incluimos un archivo X que contenga una acción o función, no debemos comprobar si existe sesion dentro de el, ya que este puede trancarse en dicha función o no ejecutar nada por no detectar la sesión creada al final, como el archivo principal se queda esperando la respuesta del otro php es que se genera el time_out (normalmente es de 30 seg por configuración en el php.ini). A pesar de que la hayas cambiado a javascript, te recomendaría volver a php debido a la escalabilidad y seguridad que posee frente a javascript (asumo que no quieres que copien tu app).