Какие форматы данных может передавать AJAX? - PullRequest
10 голосов
/ 17 мая 2009

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

Ответы [ 7 ]

4 голосов
/ 17 мая 2009

Если мы говорим об ajax, мы говорим о javascript? А насчет XMLHTTPRequest?

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

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

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

2 голосов
/ 17 мая 2009

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

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

1 голос
/ 17 мая 2009

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

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

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

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

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

1 голос
/ 17 мая 2009

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

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

1 голос
/ 17 мая 2009

Вы можете передавать любой тип данных, либо строку, либо байты.

0 голосов
/ 17 мая 2009

Существует запись Digg the Blog с названиями DUI.Stream и MXHR , которая демонстрирует то, что они называют "Multipart XMLHttpRequests". Сейчас это альфа-код, но есть демо , которое обрабатывает изображения .

0 голосов
/ 17 мая 2009

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

...