Вы должны учитывать как серверную часть (rails или что-то еще), так и клиентскую часть (javascript).
Для клиентской стороны:
Во-первых, я рекомендую вам использовать фреймворк javascript, такой как jQuery, Mootools, Prototype, Dojo или любой другой. Это скроет разницу между веб-браузерами, поэтому вы можете сосредоточиться на своей логике. (XMLHttpRequest имеет различный процесс инициализации в различных веб-браузерах)
Тогда вы можете использовать событие oncomplete или что-то подобное для цепочки последующих вызовов AJAX. Каждая структура JavaScript предоставляет хорошие функции библиотеки AJAX, хотя они имеют разные стили.
Для серверной части:
Если каждый последующий вызов зависит от предыдущего вызова, вы должны проверить входные данные от каждого вызова AJAX, чтобы убедиться в правильности вашей программы. (Это означает, что могут существовать злонамеренных клиентов, которые отправляют последующие запросы AJAX, даже если первый вызов не удался.) Проверка должна выполняться на стороне сервера.
Чтобы поддерживать согласованный контекст с конкретным пользователем (или веб-браузером), вам может потребоваться использовать сеанс.