А как Вы осуществляете взаимодействие модели на стороне сервера с клиентской?
У меня лично, ID элементов (как и сами элементы) являются неприкосновенными, дизайнеру дозволено менять только стили этих элементов.
Не буду перебивать rowdyro, отвечу здесь.
Всё еще смутная задача, но если я правильно понял, то у вас есть функции на клиенте которые влияют на оформление (а если функций нет, а влияние есть, то лучше их создать как вы правильно решили. Верно, лучше они будут в том же слое, в котором влияют. Иначе дольше искать кто влияет). То что их могут переименовать несущественно, главное чтобы человек мог легко найти и переименовать еще в тех местах они фигурируют. #login ищется хуже, чем #_API_login, да и нет смысла так именовать каждый потенциально затронутый элемент, а вот переименовать updateLogin в myAPIUpdateLogin лучше — это легко грепается. Последний штрих — вместо вызова функции всё же возвращать отдельно имя функции и параметры:

$answer = json_encode(array(
  "func" => "myAPIUpdateLogin",
  "params" => array(
    $text,
  ),
);

Так по крайней мере абстрагируетесь от ошибок экранирования, да и формализируете свой пока неформальный js API.