Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   аякс запрос не пашет. (https://javascript.ru/forum/dom-window/9771-ayaks-zapros-ne-pashet.html)

Seran4ek 04.06.2010 22:19

аякс запрос не пашет.
 
Добрый вечер, вобщем есть в пределах сайт страничка.
на страничке код "document.write('вася пупкин козел');"
я хочу аяксом получить респонстекст(который по идее и есть данный код) а потом выполнить его EVALом и через innerHTML вставить на страницу
получилось что-то вроде

Код:

function comment() {
var CommentValue;
myR=XMLHttpRequest();
myR.open('GET','/informer/3',true);
myR.onreadystatechange = function() {
 if (myR.readyState < 4) {
 document.getElementById('but_value').innerHTML='Загрузка...';
 }
 else {
 if(myR.status ==200) {
 CommentValue=myR.responseText;
 }
 }
};
myR.send(null);
document.getElementById('but_value').innerHTML=eval(CommentValue);
}

при этом запрос отправляеться, но "загрузка..." и дальше ничего)
если алертить CommentValue то там indefined..почему-то :blink:

Kolyaj 04.06.2010 22:32

Повторять слово "асинхронный" до полного просветления. Сколько можно об одном и том же?

Seran4ek 04.06.2010 22:43

ну я собственно знаю что делаю асинхронный запрос
то же самое без eval работает

"Сколько можно об одном и том же?"
я 15 минут назад зарегистрировался и понятия не имею кто когда и сколько раз задавал вам подобные вопросы

B~Vladi 05.06.2010 00:47

Цитата:

Сообщение от Seran4ek
я 15 минут назад зарегистрировался и понятия не имею кто когда и сколько раз задавал вам подобные вопросы

Достаточного логического мышления. Языку JavaScript, да и этому сайту, не один год. Да и ты не один, кто пишет на JS.

Seran4ek 05.06.2010 00:55

B~Vladi,
Господи
и вот все пишут как их достали этим вопросом, а ответить по сути никто не может:-?

B~Vladi 05.06.2010 01:00

Seran4ek, по-сути никто погуглить не может. И никто не может включить мозг. Да вообще никто не хочет напрягацо. Всем надо готовое решение. Лучше, когда на халяву. Это я так, не про тебя. Сделай выводы.

Seran4ek 05.06.2010 01:07

и зачем тогда форум по ЯваСкрипту спрашивается?
что-то я глубоко сомневаюсь что тут окромя вопросов от юзеров обсуждаются построения обучаемых нейронных сетей крутыми девелоперами(хотя кто знает)

это уже прям фид для цитат на башорг. "а почему **" - "гугли"
"а как"- "гугл в помощь", "а вот не выходит, как мне **" - "тебя в гугле забанили?"
форумы и сообщества созданы для помощи а не отправки ищущих искать далее в поисковике

ЗЫ: видите какой флуд развелся
а если бы люди дали ответ, который наверняка прост, все были бы довольны

B~Vladi 05.06.2010 01:18

Дк ты не ответил на ненавязчивый вопрос. Гуглил? Что-нибудь вообще пытался сделать? Если ничего не помогло - поможет это: http://javascript.ru/ajax
Если, конечно, мозг на месте.

Octane 05.06.2010 01:19

Цитата:

Сообщение от Seran4ek
и зачем тогда форум по ЯваСкрипту спрашивается?

http://phpclub.ru/faq/WhyForum

B~Vladi 05.06.2010 01:23

Octane, опередил :)

B~Vladi 05.06.2010 01:25

Цитата:

Сообщение от Seran4ek
это уже прям фид для цитат на башорг

Баян:haha:

Seran4ek 05.06.2010 01:33

B~Vladi,
гуглил
но я уже писал, что без EVAL работает все(респонс получаю)
тоесть код типа
Цитата:

function httprequest_a() {
myReq=XMLHttpRequest();
myReq.open('GET','/metagen.html?id=1',true);
myReq.onreadystatechange = function() {
if (myReq.readyState < 4) {
document.getElementById('file').innerHTML='Заг узка...';
}
else {
if(myReq.status ==200) {
document.getElementById('file').innerHTML=myReq.re sponseText;
}
}
};
myReq.send(null);
}
работает
возможно заминка в том что в респонсе мне приходит то, что не эвалиться..но при проверке респонса там андефайнед
завтречком займусь этим..ночью совсем мозги не варят..после зачетов

Octane,
не выдавайте действительное за желаемое

B~Vladi 05.06.2010 01:36

Цитата:

Сообщение от Seran4ek
возможно заминка в том что в респонсе мне приходит то, что не эвалиться

Firebug в помощь.

Seran4ek 05.06.2010 01:40

опаньки
заработало
в коде(в стартовом посте) строку
document.getElementById('but_value').innerHTML=eval(CommentValue);

ввел под обработчик условия на 200й статус

правда если респонс эвалить то так как это событие клика то write весь документ затирает..с этим еще повозиться придеться

Gvozd 05.06.2010 01:50

Цитата:

Сообщение от Seran4ek
правда если респонс эвалить то так как это событие клика то write весь документ затирает..с этим еще повозиться придеться

создайте скрытый iframe, и в нем выполняйте пришедший код
НО!
даже так, если это неизвестный вам код, который кто-то может изменить, он может навредить основной странице

Seran4ek 05.06.2010 01:51

Gvozd,
о! вот за идейку спасибо))
нене, код могу только я менять, иначе бы я не эвалил его :no:

Gvozd 05.06.2010 01:59

Цитата:

Сообщение от Seran4ek
нене, код могу только я менять, иначе бы я не эвалил его

тогда почему-бы его не заменить так, чтобы в нем не было document.write?

Seran4ek 05.06.2010 02:01

да вот в том то и соль, что это сделать нельзя
это черный ящик, код туда генериться сервером, доступа к серверу не имею)
но данные мои))
так что фрейм тут как нельзя кстати)

Seran4ek 06.06.2010 02:02

Gvozd,
слушай, пробую с фреймом и что-то не выходит.
точнее не совсем так как ожидалось
если пихать во фреймовый документ строки- пашет
если записывать что-то типа
window.frames[0].document.write('123');

пише во фрейме(причем при если жмакать еще раз то он дописывает в конец, тоесть будет 123123
но если я запишу
window.ramesp[0].document.body.innerHTML=eval(c_value);

где c_value это строка респонс запроса(строка типа document.write('');) то вся страница заменяеться на то что исполняеться евалом..О_о
это случайно не из-за того что в респонсе мы получаем DOCUMENT.write?

exec 06.06.2010 06:46

Seran4ek, а не легче ли сразу вставлять текст в DOM-узел?

<div id="resp"></div>


document.getElementById('resp').innerHTML = "document.write('Text');".slice(16, -3);

Seran4ek 06.06.2010 13:38

exec,
так не получиться. код в том документе генериться сервером и менять его я не могу.
конечно я бы могу попросту вызывать его в теге <script>, но блин, я начал так и хотелось бы закончить

хотяяя...я могу получить респонс текст и вставлять его так же..
попробую обязательно


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