Какие форматы данных может передавать AJAX?

Я новичок в AJAX, но в качестве обзора я хотел бы знать, какие форматы вы можете загружать и загружать. Ограничивается ли он JSON или XML или вы даже можете отправлять двоичные типы, такие как MP3 или UTF-8 HTML. И, наконец, у вас есть полный контроль над данными, байт за байтом в чем-то вроде массива байтов, или это только строка, отправленная/полученная.

7 ответов


Если мы говорим об ajax, мы говорим о javascript? И о XMLHTTPRequest?

XMLHttpRequest, который является только http-запросом, может передавать все. Но в javascript нет массива байтов. Только строки, цифры и все такое. Каждая вещь, которую вы получаете от вызова ajax, является фрагментом текста (responseText). Это может быть проанализировано в XML (который дает вам reponseXML). Специальные кодировки должны быть больше вопросом транспорта http.

бинарный вещи не зависит от ajax, но зависит от javascript. Есть некоторые странные кодировки для строк для доставки байтовых данных внутри в javascript (особенно для изображений), но это не общее решение.

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


поскольку данные передаются через HTTP, вам нужно будет убедиться, что вы используете какую-то кодировку. Одним из самых популярных является кодирование base64. Вы можете найти больше информации на: http://www.webtoolkit.info/javascript-base64.html

методология заключается в том, чтобы base64-кодировать данные, которые вы хотели бы отправить, а затем base64-декодировать данные на сервере(или клиенте) и использовать исходные данные, как вы намеревались.


вы можете передавать любой тип данных либо string или bytes


вы можете отправить все, что угодно, проблема может быть в том, как справиться с этим, как только вы его получите;)

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


AJAX просто означает, что вы передаете данные асинхронно по HTTP с вызовом JavaScript. Таким образом, ваш скрипт делает "обычный" HTTP-запрос, используя объект XmlHttpRequest (). Однако, как следует из названия, он действительно подходит только для текстовых форматов данных, поскольку вы обычно хотите выполнить некоторые действия на стороне клиента с данными, которые вы получили с сервера (не всегда, хотя иногда люди просто отправляют XmlHttpRequests только для обновления чего-то на сервере).

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

чаще всего люди предпочитают отправлять данные на сервер с помощью POST или GET (что в основном является методом передачи пар имя-значение, присущих HTTP). Для передачи более сложных данных, например иерархических структур, они должны быть как-то закодированы. XML-документы могут быть сделаны изначально на JavaScript, отправлены на сервер и проанализированы на любые типы данных необходимый. Но поскольку XML может быть немного больно, многие разработчики используют данные в кодировке JSON, потому что их легко генерировать и легко анализировать.

то, что сервер отправляет обратно, одинаково произвольно. Обычно в Javascript указывается функция обратного вызова, которая обрабатывает входящие данные. Опять же, популярными вариантами являются XML и JSON, они легко анализируются в объект документа или структуру массива соответственно. Вы также можете отправить обычный текст или другую упаковку, но помните, что вы затем нужно позаботиться о извлечении полезных данных из него самостоятельно. Иногда также может быть полезно отправить клиенту фактические фрагменты HTML, чтобы обновить что-то на странице напрямую.

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


вы можете перемещать все, что может быть отправлено по протоколам HTTP. Есть ограничения на призыв в том же домене, что и страница загружается, но не на содержание передачи. Вы также можете выполнять операции GET или POST.


есть Digg блог запись под названием DUI.Поток и MXHR это показывает, что они называют "Multipart XMLHttpRequests.- Сейчас это Альфа-код, но есть demo, который обрабатывает изображения.