@gog69

Render на стороне сервера или клиента. для AJAX ответа?

Есть страница с неким списком внизу которого кнопка Load More, которая делает AJAX-запрос
вот думаю сформировать ответ в стиле REST и отрендерить его через JS и JS-темплейт или сделать html-ответ и просто $(container).html(responseHTML);

но в тоже время пересмотрел популярные сайты - многие делают html-ответ

1й способ безусловно более правильный, но оправданы ли заморочки связанные с ним?
во 2м способе ничего плохого не вижу, лишние байты html - в наше время погоды не сыграют
  • Вопрос задан
  • 1028 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Firik67
Middle PHP Developer
Во 2 способе плохо то, что если вам эти данные нужно будет отправить ещё куда нибудь, то придётся переделывать весь рендер. Первый способ универсален. Получили данные и делайте уже что хотите с ними.
Ответ написан
miraage
@miraage
Старый прогер
Content negotiation.

Посылайте заголовок Accept и пляшите от него на сервере.
Если в Accept идет html, тогда отдайте html, иначе - json.
Гибко, удобно.
Ответ написан
@hetzerok
Первый способ правильнее в том плане что он универсальнее. Кроме того смотрите понадобятся ли вам дополнительно в ответе какие-то управляющие данные (к примеру количество, лимит, оффсет, фильтры какие-то). Если это есть то лучше заморочиться и передавать JSON какой-нибудь а обрабатывать его на JS.
Ответ написан
Комментировать
keltanas
@keltanas
Software Developer
Если пишешь к сайту какой-нибудь REST-API, то разумно получать с сервера JSON и отображать его на клиенте.

Но, раз возникают такие вопросы, никакого API нет. Поэтому лучше не заморачиваться и слать обычный HTML без layout. А если на этот-же url приходит запрос не из HttpRequest (см заголовок), а из поисковика, к примеру, или пользователь захочет открыть ссылку в новой вкладке, то отдавать уже с layout.

У каждого метода есть свои недостатки, но, серебряной пули не существует. Этот будет более эффективным в данном случае.

Если, как пишут выше, захочется какое-нибудь мобильное приложение, то все равно придется писать API с блекджеком. Но, это уже другой уровень и другой бюджет. Лучше решать поставленную задачу, а не выдумывать того, чего нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы