JavaScript « Вывод картинки, полученной через AJAX в виде потока

Всем привет. Есть php-файл, который генерит картинку. Стандартный способ
<img src="image.php">

работает без проблем. Но мне нужно получить эту картинку с помощью AJAX и вставить на страницу. Причем, получить не ссылку на картинку, а картинку в виде потока байтов.
С получением набора байтов я справляюсь легко:

if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
        {
          query = "msg=" + document.getElementById("msg_text").value;
          xmlHttp.open("post", "image.php", false);
          xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=windows-1251");
          xmlHttp.send(query);
          if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200))
            {
              var my_image = xmlHttp.responseText;
            }
        }
 

А вот что дальше делать с my_image ума не приложу. Банальное

var new_img = new Image();
new_img.src = my_image;
body.appendChild(new_img);
 

не прокатывает. У кого-нибудь будут идеи, как вывести на экран my_image в виде картинки, а не в виде текста?
P.S. Если нужно, готов выложить рабочий пример с полным набором кода.

1 ответов


Можно попробовать использовать data:URL (но так не будет работать в IE6-7, а в 8, по-моему, уже должен работать).

Общий вид такой: data:[<тип данных>][;base64],<данные>

Пример: height="14" alt=""/>
http://tools.ietf.org/html/rfc2397

В IE можно использовать mhtml - включения:
http://ap-project.org/Russian/Article/View/53/

Может подойдет такое решение...)



<img src="data:image/gif;base64,srtfhbn34VASDV...< и т.д. и т.п. >" width="16" height="14" alt=""/>