JavaScript « Вывод картинки, полученной через AJAX в виде потока
Всем привет. Есть 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. Если нужно, готов выложить рабочий пример с полным набором кода.
<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/
Может подойдет такое решение...)