Я бы скорее раскладывал html в массив. Например, симфонячей библиотекой. А потом обратно собирал, тем более если задача позволяет переводить текст по словам.
Только сервер. Все, что на клиенте, по умолчанию может быть изменено.
То есть расчет этих данных на клиенте хорош для ускорения взаимодействия. Вообще все это считается с бэкенда.
Шаг 1. На бекэнде сделать просто
echo 'response';
Все остальное закомментить
Посмотреть в консоли во вкладке сеть, уходит ли запрос и какой ответ на него приходит. Отсюда и плясать.
Если ответ 200, но тело пустое, смотреть, что может прервать php скрипт до echo.
Может быть что угодно, от настроек сервера до кода.
Если ответ не 200 - смотреть, почему роутинг неверный.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Там же инициализация происходит аналогично абсолютно