Який формат ajax-відповіді краще xml, html або json

З часу мого останнього AJAX - проекту я все частіше задавався питанням про ідеальну форму відповіді AJAX - додатки.

Коли Ви отримуєте додаткові дані для вашого AJAX - додатки, вам слід запустити скрипт, який розмістить ці екстра-дані на вашу HTML - сторінку. Безумовно, вид скрипта в більшій мірі залежить від формату отриманих вами даних. Чи є необхідність шукати XML - документ для спеціальних вузлів і копіювати їх код в HTML? Або Ви хотіли б отримати фрагмент HTML коду, який потрібно додати на сторінку в такому вигляді, "як він є"?

У моєму останньому проекті я отримав частину даних в форматі XML і частина даних в HTML. Щоб помістити дані на сторінку, для цих форматів потрібні різні типи скриптів. В обох випадках, як для форматів даних, так і скриптів під них, є переваги і недоліки.

І все ж, який формат краще? Який формат ви знаходите найкращим, або, по крайней мере, найбільш прийнятним на практиці в AJAX середовищі?

XML документи

XML документ є першим і найбільш очевидним вибором формату виведення. Вихідна ідея, що лежить в основі XMLHTTP-об'єктів, полягала в імпортуванні документів XML, тому не дивно, що більша увага отримав формат XML і до сих пір вважається форматом за умовчанням.

Сервер повернув XML документ:

Нам потрібно, щоб цей скрипт відобразив результати в нашому шарі

.

Набагато більше рядків коду, як ви бачите. Хоча W3C DOM дає нам повний доступ і до XML- документом, що приходить від сервера, і до HTML- документу, де і повинні бути відображені дані, але він не дає витонченого і простого шляху вилучення саме тих даних, які нам потрібні. Тому ми повинні неодноразово заглиблюватися в XML-документ.

переваги

Найбільш важливою перевагою мови XML є його легкочітаемость «сторонніми людьми».

Інший плюс полягає в тому, що мова XML вже давно застосовується, і багато розробників встигло звикнути до нього. Скажімо, фраза: «Я б хотів, щоб скрипт з серверної сторони повернувся в форматі XML» подиву не викликає, на відміну від прохання повернути у вигляді JSON-об'єкта.

недоліки

HTML фрагменти

Другий і, можливо, найбільш цікавий формат виведення - це шматок HTML. Зауважте, що я називаю саме «шматок» HTML, тому як ми не отримуємо цілу сторінку HTML. Замість неї нам приходить той шматочок HTML коду, який повинен бути поміщений в наш шар

.

Сервер повертає такий HTML фрагмент:

Скрипт дуже простий: потрібно тільки вставити отриманий текст в потрібний об'єкт HTML сторінки, і все готово!

переваги

Простота скрипта і є найбільшою перевагою даного методу.

Також, такий формат дає цікаві варіанти доступу. Можна було б розумними і складними словами описати серверну частину скрипта для побудови сформованої доступною HTML-сторінки, яка могла бути показано на будь-якому пристрої. Коли прийшла відповідь на AJAX-запит, скрипт серверної частини відкидає весь HTML код за винятком результатів пошуку, або AJAX-скрипт сам здійснює пошук результатів.

Звичайно, можливо написати подібні корисні функції доступу, коли ви працюєте з XML або JSON, але все ж HTML формат залишається найбільш простим рішенням.

недоліки

У разі, коли HTML шматок містить форми, або отримується HTML-елемент і є форма, то такий метод викликає жахливі помилки в Explorer.

При цьому HTML фрагменти можуть стати вельми і вельми складними. Наприклад, наведеним вище, це не відноситься, але як тільки ви захочете застосувати просунуті можливості CSS, це зажадає більшої кількості елементів, ніж необхідно, фрагмент коду повинен буде містити додаткові теги або інші потрібні вам елементи. Таким чином, скрипт серверної частини, який генерує HTML, може стати досить громіздким.

Сервер повертає наступний JSON-код:

Даний шматок коду дуже схожий на XML скрипт. Виконує ті ж функції, код просто зчитує дані іншого формату. Тут також міг підійти XSLT.

переваги

недоліки

Найголовніший недолік JSON криється в тому, що він дуже важкий для розуміння людьми, і в тому, що кожна окрема кома, лапки, і дужка повинні бути в певному правильному місці. У той час як це також вірно для XML, плутанини в мові JSON через складно читається синтаксису, як >>]> в кінці шматка даних, може налякати новачків і ускладнити налагодження.

Ваш вибір?

Отже, ми розглянули три формату виведення, які можна використовувати для отримання AJAX даних. Я був би радий сказати, який з них найкращий. Мені здається вибір відповідного формату залежить від конкретних умов, а не тільки від якихось теоретичних міркувань.

Проте, давайте спробуємо знайти найкращий формат. Я задам вам кілька питань:

  1. Чи можете ви запропонувати інший формат виведення?
  2. Який формат виведення ви застосовували на практиці в комерційних AJAX-додатках? (Демо-версії і щось в цьому роді не рахуються)
  3. Чи будете ви переходити на інший формат в майбутньому? Якщо так, то на який і чому?

Чи можете ви назвати ще переваги і недоліки представлених трьох форматів?

Відповідаю на власні питання:

  1. Ні, іншого формату даних запропонувати не можу.
  2. Застосовував в основному XML документи, трохи HTML фрагментів.
  3. Збираюся ретельно вивчити JSON і, можливо, перейду на нього з-за необмеженого доступу до задуманого додатком. Проте, мені здається, що XML продовжує залишатися кращим форматом хоча б тому що люди ним користуються.
  4. Я вже написав всі переваги і недоліки, які міг придумати.

Схожі статті