Есть ли какое-либо преимущество AJAX / XHR перед чистыми реализациями JSON / P? - PullRequest
1 голос
/ 17 июля 2009

Не только тема программирования, но вход приветствуется. В последнее время я много занимался разработкой API-интерфейсов YouTube и начал с PHP-кода, используя SimpleXML, затем фактически пропустил AJAX и сразу перешел к использованию собственного JSON и выполнял все на стороне клиента.

Пока он "чувствует" быстрее, мне интересно, готов ли он к прайм-тайму. Даже при наличии множества фреймворков ограничения CSS и различия в обработке распространения событий между браузерами все еще заставляют меня опасаться чрезмерного использования Javascript в моих приложениях.

Один недостаток в том, что иногда JavaScript движется слишком быстро , и без задержек он может чувствовать себя нервным.

Это только мои мысли. На самом деле я еще не очень углубился в XHR, так как JSON просто имел смысл, но мне было бы интересно узнать, какие опытные программисты предпочитают и почему.

EDIT:

Чтобы было ясно, я говорю о том, достаточно ли безопасно использовать / полагаться на обратные вызовы, загруженные после выполнения вызовов непосредственно в JSON API (JSON-P), или же вам действительно следует полагаться на изолирующие боковой слой (XHR) между вами и сторонним API, если не что иное - для целей кэширования?

Ответы [ 2 ]

8 голосов
/ 17 июля 2009

XHR:

  • Предоставляет вам доступ к заголовкам HTTP
  • Предоставляет доступ к кодам ошибок
  • Позволяет определить действие, которое необходимо предпринять в случае ошибки службы
  • Не требует глобальной функции обратного вызова

JSON-P - это подход огня и молитвы.

Вы не можете сравнить XHR и JSON. XHR - это способ создания HTTP-запросов. JSON - это формат данных. Вы можете использовать их вместе. JSON-P включает генерацию <script> элементов для извлечения JSON вместо использования XHR.

3 голосов
/ 17 июля 2009

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

XHR (XMLHttpRequest)

Описание объекта XMLHttpRequest в MDC
Этот объект используется в JavaScript для выполнения HTTP-запросов к серверу. Хотя имя подразумевает, что он запрашивает XML, он может получать данные любого типа (например, JSON.)

JSON (нотация объектов JavaScript)

Определение JSON на json.org
Это формат данных. Его можно использовать для представления структуры данных, очень похожей на XML, но в более сжатой форме. Он также напрямую совместим с JavaScript и его легко конвертировать в объект JavaScript.

JSONP (JSON с отступом)

Определение JSONP Бобом Ипполито
Расширение JSON, которое внедряет тег <script>, который выполняет фрагмент JavaScript непосредственно с сервера, с которого он запрашивается. Дополнительный параметр обратного вызова - это глобальная функция, которая вызывается на вашей странице для делегирования данных. Полезно для запроса данных из внешнего сервиса в JavaScript.

AJAX (асинхронный JavaScript и XML)

Я не могу дать точное описание этого, потому что оно может означать очень много вещей. Взгляните на запись в Википедии .


Я бы сказал, что он определенно готов к прайм-тайм. Если он чувствует себя «слишком быстро», то достаточно легко сделать переход из одного состояния в другое более плавным / медленным.

С сегодняшними фреймворками вы можете заставить JavaScript вести себя одинаково в 99% браузеров посетителей. Даже довольно безопасно предположить, что у всех включен JavaScript (например, YouTube, который не воспроизводит видео, если у вас не включен JavaScript.)

Тем не менее, неплохо бы иметь простую статическую резервную версию вашего сайта, чтобы удовлетворить этот последний 1%.

Большинство моих недавних частных веб-проектов были реализованы в основном на JavaScript, используя XHR-запросы к серверу для получения данных. Одним из таких примеров является моя коллекция библиотек JavaScript , которая имеет концепцию отдельных страниц, но перемещается полностью, используя хэш-часть адреса. У него есть такое нервное поведение, о котором вы говорили (но с ним можно работать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...