Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как из response получить данные (https://javascript.ru/forum/misc/5273-kak-iz-response-poluchit-dannye.html)

east 01.10.2009 16:38

Как из response получить данные
 
var request = new XMLHttpRequest();
request.open( "GET", fileName, false );
request.setRequestHeader("Content-Type", "image/gif");
request.send(null);

...........................................

var obj = document.createElement( 'img' );
obj.style.left = ......;
obj.style.top = ......;
obj.style.position = ......;
obj.style.width = ......;
obj.style.height = .......;
obj.id = ......;
parent.appendChild( obj );


Как привести контент ответа к src элемента IMG ?????
( т.е. как запихнуть картинку, приходящую в ответ в динамически созданный элемент IMG )

B~Vladi 01.10.2009 16:53

obj.src=request.responseText;

Если, конечно, ответ пришел в виде правильного урла.

И почитайте о кроссбраузерном аяксе.

east 01.10.2009 17:04

Цитата:

Сообщение от B~Vladi (Сообщение 31459)
И почитайте о кроссбраузерном аяксе.

Вы по-поводу этого?
try
{
     request = new ActiveXObject("Msxml2.XMLHTTP");
}
     catch (e)
     {
         try
          {
             request = new ActiveXObject("Microsoft.XMLHTTP");
          }
          catch(e)
          {
                  request = false;
          }
      }

      if (!request && typeof request != 'undefined')
      {
           request = new XMLHttpRequest();
      }

Если да, то я просто вопрос оформил псевдо-кодом. Только для раскрытия сути проблемы.

Octane 01.10.2009 17:10

request.setRequestHeader("Content-Type", "image/gif");

Вы точно адрес картинки пытаетесь получить?

east 01.10.2009 17:19

Цитата:

Сообщение от B~Vladi (Сообщение 31459)
obj.src=request.responseText;

Если, конечно, ответ пришел в виде правильного урла.

В ответе не урл, а бинар картинки, так что к сожалению, данный способ не работает.
А если немного быть точнее, то в присваивание атрибута src реализовано так:
var attr = document.createAttribute("src");
// Если присвоить урл картинки следующтм образом, то все отлично
attr.value = <урл>;
obj.setAttributeNode(attr);
.......
parent.appendChild( obj );


А надо в элемент 'img' запихнуть уже принятую картинку из response.
Можно совместить эти два кода, тогда картинка будет кешироваться из response, а помещаться в img из кеша вторым запросом путем явного указания урл'а в атрибуте src, но не хочется.

B~Vladi 01.10.2009 17:28

Создавайте картинку, присваивайте ей урл, на который вы шлёте запрос. В ответ придёт картинка и вставиться. Зачем тут аякс?!

east 01.10.2009 17:30

Цитата:

Сообщение от B~Vladi (Сообщение 31467)
Создавайте картинку, присваивайте ей урл, на который вы шлёте запрос. В ответ придёт картинка и вставиться. Зачем тут аякс?!

Без обиняков: если бы мне это было не нужно - не спрашивал бы.

B~Vladi 01.10.2009 17:35

Дк какие проблемы?! Ты же куда-то шлёшь запрос, так?! вот и вставляй этот запрос в src картинки!

Либо Data:URL.

east 01.10.2009 17:49

Вот смотрите, что получается, ответ:
HTTP/1.1 200 OK
Date: Thu, 01 Oct 2009 13:40:45 GMT
Cache-Control: private
Content-Type: image/gif
Content-Length: 13529
Connection: Close

GIF89a€.......... hex картинки...................

Что мне прописать в:
attr.value = request. ............ ???????
или как по-другому?
ведь request.responseText и request.responseXML - не тот тип данных

Как получить контент ответа, сами данные. Как их преобразовать к типу картинки? Или, допустим, нужно создать массив, в который поместить данные из ответа, а ими уже заполнить элемент img.

B~Vladi 01.10.2009 17:55

НЕ НАДО ИСПОЛЬЗОВАТЬ AJAX!!!
Это до вас доходит?!

Либо гуглить по запросу data:url.
Если уж без него никак...


Часовой пояс GMT +3, время: 15:00.