developer blog

451 degrees Fahrenheit

Обновление областей страниц на лету с помощью Ajax.Updater

November 23rd, 2007 by pilot |

Ajax.Updater - один из методов библиотеки prototype.js

В web 2.0 проектах часто приходиться обновлять некоторые области на страничке, для упрощения жизни пользователя, к примеру:

  1. Вывод системного сообщения без перезагруки страницы
  2. Показать форму входа или регистрации
  3. Обновить блок новостей

это небольшой список из того, где можно использовать Ajax.Updater

Хочу заметить, что через мерное применение большого количества обновляемых элементов на странице не улучшает ее, а зачастую снижает общую скорость загрузки страницы, и приводит к более частым “поломкам” в разных броузерах.

Возьмем самый простой пример, динамически без перезагрузки страницы обновим область в которую выведем коментарии, к какому либо сообщению нашего блога.

[cc lang="php"]

Эта статья раскажет как обновлять старницу на лету
с помощью Ajax.Update из библиотеки prototype.js

здесь будут коментарии…


[/cc]

В примере выше, Ajax.Updater вызывает файл /url_to_comments/comments.php, который выводить комментарии к статье, и обновляется контейнер id=”comments”.

Контейнер id=”comments” полностью перезаписывается, поэтому в вызываемом файле comments.php нужно указывать открывающие и закрывающие <div> коментарии </div> теги.

Ajax.Updater имеет еще ряд параметров. Если сервер возвращает HTML, содержащий скрипты, и вы хотите чтоб они исполнялисть, в строке параметров нужно указать evalScripts: true.

Русский перевод статьи об Ajax в protoype.js вы можете почитать на страницах блога Parabola.

Приведенный выше пример не совсем точно показывает всю прелесть обновления блоков на странице, ниже показан более правильный способ использования Ajax.Updater.

[cc lang="php"]

Эта статья раскажет как обновлять старницу на лету
с помощью Ajax.Update из библиотеки prototype.js

здесь будут коментарии…


[/cc]

В этом примере добавиласть кнопка “Показать комментарии”, т.е. при первоначальной загрузки старницы, комментариев под статьей нет, в момент нажатия на кнопку “показать комментарии”, вызывается функция showComments(). Которая обновляет контейнер id=”comments” и выводит комментарии к статье.

Работать с Ajax.Updater очень просто! Если у вас есть свои примеры использования этого метода оставляйте их в комментариях к этой статье.

В следующей статье я раскажу об методе Ajax.Autocompleter из библиотеки script.aculo.us, который во многом похож на Ajax.Updater и позволяет добавлять к полям формы автозаполнение по мере ввода текста в форму.

Не забывайте подписавать на рассылки.

top of hotblogs.org.ua

Раздел Ajax, Prototype, javascript

8 Responses

  1. protorian Says:

    у меня проблема с этим ajax.updater в том, что в IE он не хочет возвращать теги форм, т.е. если написано [form]text[/form] то в IE ничегон не работает, а в FF и в Opera все нормально. Если убрать то все работает.
    Подскажите как с этим бороться?

  2. Alexei A. Korolev Says:

    как раз искал про ajax updater - отличная статья, пишите еще

  3. pilot Says:

    Скоро будет статья про Ajax.Autocompleter поку на примере одну хитрость, которая не докоментирована, но без которой нельзя практически использовать комплитер.

    По поводу того, что формы действительно при простом запросе в IE не передаются и весь запрос выдает false - это действительно есть, как найду решение этой проблемы “правильное” напишу об этом. А сейчас вы можете выносить теги form за пределы области обновления.

  4. Guffi Says:

    Всем привет, пробую пример, неработает(, прототайп скачал с сайта, последня версия, при нажатии на кнопку во втором примере, в ие7 - ошибка ява скрипта. В опере ничего тоже не подгружает, файл пхп, он выводит хтмл в тегах .
    Что можно попробовать?

  5. pilot Says:

    Покажи, как ты сделал. Ссылку дай на сайт. Вообще легче всего отслеживать ошибки в FireFox используя http://www.getfirebug.com

  6. iSeeYou Says:

    Вот что файрбаг выдает:

    post is not defined
    showComments()test.php (line 17)
    onclick(click clientX=0, clientY=0)test.php (line 1)
    [Break on this error] method: post

  7. pilot Says:

    Так давай на форуме пообщаемся, вот тут http://www.symfony.org.ua, создай тему по ajax и положи полностью все как ты написал, вплоть до путей своих.

  8. Ksun Says:

    Хм… Но, как говорится в пословице, а воз и ныне там :)

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.