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.
Если уж без него никак...

Octane 01.10.2009 18:04

Да зачем вам AJAX, не нужен он тут вообще:
var obj = document.createElement( 'img' );
img.src = fileName;
parent.appendChild( obj );

e1f 01.10.2009 18:08

Octane,
Разница все же будет, с аяксом или без -- в хидере страницы загрузка крутится будет :) Возможно, ТС напрягает именно это.
east, B~Vladi Вам уже подсказал -- data:URL

east 01.10.2009 18:44

Всем спасибо за советы.
Нужен аякс мне или нет - не тема вопроса, не так ли?
Ум пытливый, разберусь.Да и гугл поможет.

Kolyaj 02.10.2009 09:02

Цитата:

Сообщение от east
Нужен аякс мне или нет - не тема вопроса, не так ли?

http://phpfaq.ru/humor
Цитата:

Как задают вопросы на форумах:
Идет мент. Смотрит - фонарь стоит, под фонарем лужа, в луже мужик сидит.
- Чё здесь делаешь?
- Да вот, часы потерял. теперь ищу.
Ну, мент думает - дай помогу. Искал-искал, весь перемазался - нету часов.
- Слушай, мужик. Нету тут никаких часов!
- Да я знаю. Я их вон там, возле забора потерял.
- А ЧЕ ТЫ ИХ ЗДЕСЬ ИЩЕШЬ???
- А тут светлее.

east 02.10.2009 09:43

+1

east 02.10.2009 10:06

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется. (и аякс тебе не нужен)
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум - из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится - тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите - лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ!!! Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю!!! А от вас нормального ответа недождёшся!!!
Прохожий: Самое крепкое дерево - дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно!!!


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