Вопрос № 149250: Доброй ночи! Из функции передаю значение return req.responseText; На выходе оно теряется. В ошибках пишет: 'undefined' есть null или не является объектом. Если в самой функции пишу alert(req.responseText), всё правильно выдаёт.<b...
Вопрос № 149.250
Доброй ночи!
Из функции передаю значение return req.responseText; На выходе оно теряется. В ошибках пишет: 'undefined' есть null или не является объектом. Если в самой функции пишу alert(req.responseText), всё правильно выдаёт. Вне функции: var answer=ajaxhtml('today','daymon='+daytoday); alert(answer) даёт 'undefined'.
Где я напортачил?
На всякий случай функцию прилагаю, но она и код php уже проверены - работают правильно до самого выхода.
Отвечает: Иван Сергеевич
Здравствуйте, Прим Палвер!
Все правильно, Ваша функция ничего и не возвращает :) Дело в том, что запрос - асинхронный, т.е. после отправки http-запроса к серверу страница не ждет результата его работы. Все, что ожидается от сервера, приходит в req.responseText (на самом деле есть еще и responseXML, но ИЕ его некорректно обрабатывает, поэтому обычно используется именно текст), что с ним делать - указываете в функции onreadystatechange. И вот тут-то проблема - возвращать результат ее работы некуда. Надо
просто обрабатывать ответ (вставлять на страницу или еще что-то). Я обычно решаю подобные вещи указанием в качестве третьего параметра функции ajaxhtml имени какой-то функции, отвечающей за обработку полученного результата. В нее и передается ответ сервера (с помощью функции eval()).
Ответ отправил: Иван Сергеевич (статус: Студент)
Ответ отправлен: 02.11.2008, 20:50
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 149250 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Всё равно не понял, КАК ВЫВЕСТИ из функции :( За её пределы.
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.