![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| TheOne |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
подскажите плз
структура страниц такая. есть главная, подгружен файл с ява скриптами. С главной вызывается через ajax другая страница. В ней юзается класс обработки инфы, потом возвращается результат. Проблема в том, что во второй странице и в классе (описан в третьем файле) не получается вызвать <script>. Т.е. например echo "123123<script language=\"JavaScript\">...</script>" в этом примере выводится ТОЛЬКО 123123 притом при просмотре хтмл кода из сгенерированной страницы вообще этот echo на виден. Если там выводить допустим форму с кнопкой и онклик'ом на ней - скрипт пашет, но мне нужно локэйшн изменить без нажатия, поэтому так не подходит. к слову - сам скрипт, если запускаю в левом файле - работает, т.е. проблема именно в том, что я создал какие-то "условия", что ничего не работает именно в данном случае. з.ы. описал структуру, ибо мб поможет дать диагноз траблы=) или мой....) Подскажите плз, заранее огромное спасибо. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
мало понятно, но...
подгружается аяксом кусок javascript-кода? его ещё надо запустить. либо каким-то макаром через appendChild встроить, либо через другие функция а-ля eval() или document.write() возможно... |
|||
|
||||
| TheOne |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
не, всё гораздо проще... я описал всю ту инфу о страницах, ибо может кто-то более сведующий увидит там причину проблемы. Через аякс по большому счету приходит лишь ответ, куда нужно перейти.
Вся шняга в том, что из второй страницы и из класса (хотя в них присутствует библиотека с подгруженным яваскриптом) НЕ вызывается скрипт, т.е. ноль эмоций на теги <script>. Поэтому банально window.location на мой результат с аякса не могу сослаться... =((( |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
ну, я про это и говорю. пришедший текст воспринимается именно как текст, браузер его автоматом в свою модель не встроит, надо активизировать
|
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: нет Всего: 36 |
||||
|
||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
ну вот смотрите. есть два файла aja1.php и aja2.php:
aja1.php
aja2.php
введите 3 в поле на aja1.php и посмотрите, сработает ли фокусы с rawurlencode и decodeURIComponent нужны для избегания проблем с кодировкой, но что-то сейчас их победить не удалось. но это уже другая тема |
||||
|
|||||
| TheOne |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
спасибо за скрипты.
использовал вашу функцию ajax_o, помогает для случаев, когда есть <script> а для частей без этого тега не катит. Пытался доработать - делал eval для оставшихся частей массива"y",даже пробовал целиком всю инфу обрабатывать сплитами и декодом - что-то никак. По большому счету меня бы всё устроило, НО вывести текст без <script> я не могу, а если юзаю document.write, у меня стирается всё старое и получаю "чистый лист" со своим сообщением. кстати - в примере get, а я использую post, не знаю важно ли... =) p.s. когда использую document.write, то на выходе получаю страницу с всего 2 парами тегов <script ...src></script> <script ...>message</script> первая строка - это подгрузка внешнего файла со скриптами а вторая строка соответственно - моя обработанная инфа(не обязательно <script>, в некоторых случаях вывожу только сообщение). вероятно я просто не понимаю принципа работы eval и принципа "не работы" браузера с тем присланным "неактивизированным" текстом...( |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
вообще, мало могу посоветовать о том, как это делают обычно, т.к. сам никогда не сталкивался с подобной задачей догрузки скриптов
поэтому единственное решение - в каждом конкретном случае посвоему обрабатывать приходящую инфу следует также упомянуть, что для незаконченной строки eval('function asdf() {'); выдаст ошибку, поэтому я засунул всю функцию в одну строку. а в случаях когда это сделать нельзя, то придётся ещё занимать и склейкой
ну, тут ничего сложного нет. eval() - команда, исполнить введённую в неё строку как код. всё что мы в неё напишем, она исполняет как код, правда, с большими ресурсозатратами. поэтому надо соблюдать синтаксис вводимого в неё почему браузер не обрабатывает приходящий код? да потому что он не знает что с ним делать, когда исполнять, в каком контексте. когда загружается страница, мы явно указываем где его исполнить, по ходу или потом |
|||
|
||||
| TheOne |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
спасибо большое за ответ.
в общем, если тогда отталкиваться от задач: есть php с формой, инфа передается другому php через ajax, возвращается ответ, в зависимости от него - выбирается нужное значение для location. Как лучше поступить, если не брать во внимание мой кривой способ? |
|||
|
||||
| TheOne |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 2.7.2007 Репутация: нет Всего: нет |
еще хотел спросить про eval - как он вклинивается в работу? вот есть у нас переменная, eval же(в вашем скрипте) просто разбивает переменную на части и вроде как НЕ возвращает ничего, а "подтверждает" лишь части... т.е. выполняет части между тегами script. А с самими тегами что происходит?
p.s. поставил бы плюсик с удовольствием, но зарегившись в 2007 году, постить начал только в этой теме, а так только читал=) |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
слабо уловил. location вполне устойчивое решение для переадресации пользователя, правда, если после отправки данных пхп будет произведена перезагрузка страницы не понятно, зачем вообще приключения с аяксом. банальная перезагрузка и всё гуд да ничего, мы же их не засовываем в eval();, что правильно, учитывая что они не являются кодом javascript. eval никак не вклинивается, он просто выполняет. т.е. если у нас есть функция с eval(), значит это всё равно, что вставить дополнительный кусок кода в эту функцию кстати, мы тут упёрлись в аякс, подгрузку и прочее, а о самом методе решения не поговорили. что мешает сделать скрытый фрэйм и по мере надобности подгружать в него краткие страницы содержащие только скрипты? по загрузке они станут доступны из родительской |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: нет Всего: 36 |
eval использую но можно например сделать тоже но через DOM
работает не всегда - если есть сложные объекты созданные через наследование и т.д. то к ним нужно дописать Это сообщение отредактировал(а) pythonwin - 24.12.2008, 17:31 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |