Задать вопрос
@LiguidCool

JSON vs. HTML (XML?). Что использовать в AJAX запросе?

Собственно сабж.
Я как-то по привычке возвращаю при ajax запросе html код и вставляю / добавляю в нужный блок. Знаю что можно передавать данные JSON, но честно говоря не вижу в этом смысла, т.к. получается двойная работа - сначала ты готовишь данные на стороне сервера, а потом из JSON'на на клиенте парсишь его в HTML.
В чем профит пользования JSON и где его тогда используют? Вопрос удобства конкретно взятого разработчика?
  • Вопрос задан
  • 1119 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 4
JSON это данные в голом виде, не привязанные к текущей реализации на фронтенде. Отдавая разметку HTML с сервера разработчик привязывает серверную часть к определенному виду на фронтенде. Если меняется дизайн, нужно менять весь бэкенд. С JSON в этом случае будет проще работать. Логику на сервере в этом случае можно вообще не менять, а изменить только логику на фронтенде.
Во-вторых JSON-данные меньше размером, чем HTML-разметка, что снижает нагрузку на сервер и трафик.
В-третьих генерация HTML на бэкенде это дополнительная нагрузка на сервер. Лучше нагрузить клиент (браузер), особенно если речь идет о высоконагруженном сервисе (high load).
В третьих отдавая данные в виде JSON, можно сократить количество запросов к серверу, за счет объединения данных для разных участков html в одном JSON. А вот с HTML-разметкой такое не прокатит.
P.S.: Отдавать разметку в ajax-запросе уже давно считается дурным тоном.
Ответ написан
JSON будет удобен во многих случаях, самое простое - если полученные данные необходимо заполнить в поля формы. Конечно можно её сформировать и на сервере, но если форма сложная, серверный скрипт получится довольно сложным.
Ответ написан
Комментировать
@Kostik_1993
Web Developer
Если у вас просто сайт, то можно и так, а если у вас сервис, у которого есть не только сайт, но и приложения и api то накладно делить сервер на тот что будет отдавать HTML или JSON проще сделать один backend который будет принимать и отдавать данные в JSON, а каждое приложение будет уже самостоятельно обрабатывать эти данные на клиенте
Ответ написан
Комментировать
@TM_ID
"Двойная работа получается" в любом случае.
Нам нужно создавать/отдавать данные и нам нужно получать/показывать данные.
За что отвечает бек а за что фронт выбирать вам, но удобней и правильней иметь api по которому фронт сможет получить необходимые данные и показать их в нужных местах и с нужной красотой.

Например нам нужно получить список книг:
get /books

получим в ответе:

{
  items: [
    {
      id: 0,
      name: "Book0"
    },
    {
      id: 1,
      name: "Book1"
    }
  ]
}

А если мы захотим узнать количество всех книг?
Просто добавим в ответ "totalResults: 50" и в шаблоне на фронте их отобразим (если нужно), аля:

<div class="books-total">{books.totalResults}</div>

А если шаблонов много и они разные?
А если вы хотите показать график с этими книгами? А если этих графиков десятки?
А если нужно в определенный момент показать пагинацию?
итд.

Рекомендую посмотреть на api googl'a или digitalocean.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы