Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Проблемы при использовании AJAX (http://forum.typo3.ru/showthread.php?t=2566)

Prost 01.02.2007 19:17

Проблемы при использовании AJAX
 
При использовании расширений с формами, такие как "Гостевая книга", "Поиск" на сайте с AJAX'ом имеется следующая проблема.
После отправки содержимого формы при нажатии на кнопку "Submit" не получается на ходу засунуть содержимое новой сгенерированной страницы в нужный слой. При работе со ссылками просто меняю href на "#" и добавляю параметр onClick=getAJAX(...), а вот как быть с формами - там ведь после "Submit" выполняется функция обработки формы из расширения.

Подскажите, пожалуйста, как можно решить такую проблему?

С AJAX'ом связался из-за того, что для навигации используется дерево (расширение Foldout Menu), а оно (дерево) при большом количестве страниц на сайте генрится достаточно долго. Поэтому и решил перегружать только только часть страницы, чтоб дерево каждый раз не генерилось.

Может быть можно настроить расширение Foldout Menu, чтобы дерево не генерилось каждый раз при открытии новой страницы и не использовать AJAX? Тогда бы проблем было меньше :)

void 01.02.2007 20:17

Вроде, точно так же можно перехватить через onSubmit = doAJAX();return false;
Хотя вообще логичней тогда уж и дерево строить на AJAX тоже.

Prost 02.02.2007 12:30

Через onClick=getAJAX(...) на кнопке "Submit" тоже не получается - страница все также грузится на все окно без остальных слоев с интерфейсом, включая дерево. А если добавлять после "onClick" еще и "return false;", то тсраница вообще не обновляется.

А что даст, если дерево тоже строить на AJAX? Не совсем понял.

Кстати, а как сделено в BackEnd TYPO3? На фреймах? Там ведь тоже не перегружается вся страница.

PhilD 02.02.2007 12:38

4.0 - на фреймах

void 02.02.2007 19:53

В 4.1b3 - уже на AJAX.

Prost, не на onClick у кнопки. А onSubmit у формы. Возвращая false, форма действительно не отправляется, но никто не мешает скрыть её и отправить через метод submit() формы.

Prost 03.02.2007 13:48

Попробовал для гостевой книги у формы onsubmit="getAJAX ('index.php?id=ID_стр_гост_книги','ID_слоя'); return false" но данные не заносятся в гостевую книгу.

void, а для чего дерево тоже строить на AJAX?

void 03.02.2007 17:08

Для того, чтобы не перезагружать страницу каждый раз при сворачивании-разворачивании узлов.
А что код не работает - это вполне логично)

Prost 04.02.2007 18:00

Цитата:

Сообщение от void (Сообщение 9602)
А что код не работает - это вполне логично)

Подскажите, пожалуйста, как сделать код onsubmit рабочим.
Цитата:

Для того, чтобы не перезагружать страницу каждый раз при сворачивании-разворачивании узлов.
При сворачивании-разворачивании узлов перезагрузки страницы не происходит, презагрузка происходит только при переходе на другую страницу в дереве. И то, замедление в скорости загрузки становится заметным при большом количестве страниц в дереве - сейчас их около 200.
Основная задержка, я так думаю, связана с инициализацией дерева каждый раз при открытии новой страницы. Все вышеизложенное относится, конечно же, для случая без использования AJAX.
А можно ли сделать так, чтобы проинициализировать дерево один раз при загрузке сайта, хранить его где-то, а затем использовать при каждом переходе на новую страницу?

Pavel Antonov 05.02.2007 14:37

Цитата:

Сообщение от Prost (Сообщение 9611)
Подскажите, пожалуйста, как сделать код onsubmit рабочим.

А разве onsubmit не работает? Мне кажется проблема в том что делается в функции вызываемой на onsubmit.

Цитата:

Сообщение от Prost (Сообщение 9611)
При сворачивании-разворачивании узлов перезагрузки страницы не происходит, презагрузка происходит только при переходе на другую страницу в дереве. И то, замедление в скорости загрузки становится заметным при большом количестве страниц в дереве - сейчас их около 200.
Основная задержка, я так думаю, связана с инициализацией дерева каждый раз при открытии новой страницы. Все вышеизложенное относится, конечно же, для случая без использования AJAX.
А можно ли сделать так, чтобы проинициализировать дерево один раз при загрузке сайта, хранить его где-то, а затем использовать при каждом переходе на новую страницу?


"Где-то" хранить не стоит. Варианта два:
  1. Отказаться от перезагрузки страницы вообще. При выборе в дереве подгружать контент через AJAX. (Как делает Google Reader)
  2. Не формировать все дерево сразу, а динамически по надобности. При разворачивании узла подгружать уровень ниже через AJAX.
Я бы сделал и то и то... 200 узлов все так, зачем их ганять туда сюда.


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

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot