А каким образом формируется запрос на сервер через ajax, чую что-то асинхронно в другом месте не успевает обработаться и запрос на сервер кривой уходит или перезапись параметров происходит в js. Отследите через Console.log() как меняются параметры запросов. Ибо 404 это ответ сервера что такой страницы не существует, ну а 504 видимо вылазит из-за того что похапе не успевает обработать и отдать серверу инфу за то время когда сервер должен вернуть ее.