Встраивание изображения в ответ AJAX - PullRequest
7 голосов
/ 23 марта 2009

Возможно ли (и поддерживается кросс-браузер) встроить изображение в XML-ответ AJAX, а затем загрузить это изображение с помощью JavaScript?

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

1) XML, содержащий информацию о графике, итоги и данные карты изображения, позволяющие пользователю нажимать на соответствующие области.

2) Графическое изображение.

Поскольку данные могут изменяться между двумя запросами (и могут быть дорогостоящими для расчета), я бы предпочел сделать это в одном запросе (вернуть изображение с XML). Текущая реализация кэширует статистику в течение небольшого периода времени, так что результаты нескольких запросов все равно будут совпадать. Поскольку объем данных, которые необходимо кэшировать, будет увеличиваться (с ~ 2,5 КБ до ~ 1,2 МБ), я хотел бы попробовать альтернативный метод.

ПРИМЕЧАНИЕ. Я не хочу использовать встроенные изображения PNG b64, поскольку они не поддерживаются в IE.

Ответы [ 7 ]

3 голосов
/ 23 марта 2009

Поскольку кажется, что это стоит больше работы, я решил, что более простым решением будет:

1) Отправка данных XML клиенту с подробной информацией о том, что должно быть отображено.

2) Клиент отправляет запрос на изображение, включая данные на график (аналогично Google Chart API).

Это отделяет рендеринг диаграммы от данных, а затем может использоваться в будущем для генерации общих диаграмм для других наборов данных. Другое преимущество заключается в том, что он не требует кэширования на стороне сервера, поскольку используется только 1 запрос.

3 голосов
/ 23 марта 2009

Не можете ли вы сохранить изображение на сервере и отправить URL клиенту?

2 голосов
/ 23 марта 2009

Возможно, вы захотите проверить эту ссылку , чтобы увидеть, будет ли работать эта концепция. Эта ссылка может быть полезна.

Я думаю, было бы интересно объединить оба набора данных в XML.

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

Ну на самом деле вы можете , но, вероятно, оно того не стоит. Кажется, что векторный метод, такой как canvas, и альтернативы VML для IE были бы лучшей альтернативой для визуализации графиков. Тогда вам нужно только передать данные графика в браузер.

1 голос
/ 23 марта 2009

Рассматривали ли вы использование Google Chart API ?

0 голосов
/ 23 марта 2009

Вы можете вернуть изображение ajax-клиенту, а затем включить данные XML в заголовок X-HTTP для изображения.

Но вам нужно выяснить, возможно ли прочитать X-заголовок из ajax-клиента.

0 голосов
/ 23 марта 2009

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

Content-type: image/png

Изображение восстанавливается каждый раз.

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

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