Подтвердить что ты не робот

Ответ AJAX: данные (JSON, XML) или фрагмент HTML?

Мне просто интересно, что такое идеальный формат вывода для ответа AJAX? Чистые данные (JSON, XML) отображаются на странице с использованием какого-либо клиентского механизма JavaScript-шаблонов? Или фрагмент HTML, отображаемый на странице "как есть"?

Каковы ваши предпочтения и почему?

4b9b3361

Ответ 1

В большинстве сценариев вам нужно только отправлять JSON (или XML в зависимости от ситуации, я использую JSON в качестве примера).

  • Если вы отправляете данные, такие как котировки акций, используйте JSON.
  • Если вы хотите, чтобы сетевой уровень был очень тощим, отправляйте чистые данные JSON и дайте клиенту тяжелую работу по добавлению разметки.
  • Если клиентская страница является постоянной, отправьте JSON. Затем клиент может отправить приветствие Person.Name. Он может обновить Person.Score или показать форму для редактирования Person.Status, все имеющие дело только с одним объектом Person.
  • Если вы просматриваете веб-API, очевидно, используете JSON, чтобы клиент мог делать с ним все, что захочет.

Теперь, когда я сказал, мне очень не нравится генерировать HTML из JavaScript. Это кошмар для обслуживания, и мне просто не нравится смешивать два. Итак, как вы избегаете генерации HTML в JavaScript, если все, что вы отправляете, это JSON? Если вы имеете дело с объектом Person (s), когда вы сначала визуализируете страницу, вы должны отображать ее как таковую:

...
<div class="person display">
    <div class="name"></div>
    <div class="status"></div>
    <div class="score"></div>
</div>
...

Когда вы получаете данные человека через AJAX, просто заполните эту структуру DOM.

Если вы хотите отображать информацию для нескольких лиц, вместо того, чтобы напрямую заполнять структуру DOM, вы должны сделать клон, а затем заполнить ее. Таким образом, ваш шаблон останется нетронутым, и вы сможете его повторно использовать.

Ответ 2

Во многом зависит от того, что будет использовать данные:

Для mashup и веб-сервисов

Для данных, которые будут использоваться в вашем приложении и извне, никогда не используйте HTML: трудно разобрать, трудно сделать его подходящим в другой структуре.

Если в нем несколько данных, например, некоторые обновленные для виджета, используют JSON, потому что это быстрый и простой в использовании.

Если это может быть много данных, как результат поискового запроса, используйте XML, потому что он более гибкий для огромного анализа данных.

Только для внутреннего использования

Не рекомендуется использовать чистый XML. Пакетный анализ всегда будет выполняться до выхода в любом случае.

В большинстве случаев вы захотите использовать JSON, поскольку он более гибкий, чем HTML, но довольно быстро, чтобы его можно было установить.

Используйте HTML, если вы знаете, что данные не будут обрабатываться впоследствии и если компоновка сложна. Написание сложного HTML на стороне сервера намного проще, чем использование DOM.

Ответ 3

Если вы возвращаете много HTML, лучше всего собрать его на серверной стороне и просто загрузить его на страницу.

Если вы возвращаете что-то вроде пары пар ключ-значение для обновления <select> с или чего-то подобного, лучше всего вернуть его как JSON и создать HTML на стороне клиента.

Ответ 4

Для меня нет "идеального" способа. Работа с чистыми JSON и jTemplates для рендеринга на стороне клиента с jQuery, когда мне нужна разбивка на страницы, и у меня уже есть клиентский интерфейс.

Использование JSON тоже, когда я должен реализовать простой вызов сервера: автозаполнение, редактирование на месте, сохранение черновиков и т.д.

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

btw, когда я могу отдать предпочтение json, потому что мы можем переключиться на обработку объектов на стороне клиента, вместо того, чтобы просто иметь панель обновления.

Ответ 5

Это зависит от ситуации, я предпочитаю отправлять данные клиенту и обновлять страницу с помощью клиентской среды, потому что у меня есть один доступный. Если бы я писал свои собственные, а фрагменты были достаточно маленькими, id, вероятно, сделал бы это серверной стороной, сохраните js как можно более тонким.