developer blog

451 degrees Fahrenheit

Archives Posts

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

November 23rd, 2007 by pilot

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

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

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

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

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

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

<!-- Выводим текст сообщения блога -->
<div>
 Эта статья раскажет как обновлять старницу на лету
 с помощью Ajax.Update из библиотеки prototype.js
</div>
<!-- Комментарии к статье -->
<div id="comments"> здесь будут коментарии... </div>

<script language="javascript">
  new Ajax.Updater('comments', '/url_to_comments/comments.php', {
    method: get
  })
</script>

В примере выше, 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.

<form method="POST">
<!-- Выводим текст сообщения блога -->
<div>
 Эта статья раскажет как обновлять старницу на лету
 с помощью Ajax.Update из библиотеки prototype.js
</div>
<!-- Комментарии к статье -->
<div id="comments"> здесь будут коментарии... </div>
<input type="button" value="Показать комментарии" onclick="showComments()">
</form>

<script language="javascript">
  function showComments()
  {
    new Ajax.Updater('comments', '/url_to_comments/comments.php', {
      method: get
    })
  }
</script>

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

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

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

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

Filed under Ajax, Prototype, javascript having 7 Comments »

Archives Posts

Если вы должны кому-то пива…

November 13th, 2007 by pilot

Признайтесь в этом!

Сайт на котором можено признаться, в том что за что-то и кому-то должны пива ))

www.foamee.com

foamee

Там же можно купить купить подставки под пиво от foamee и футболки с символикой сайта.

Технически сайт реализован на framework’e CakePHP.

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

Filed under web having 5 Comments »

Archives Posts

Пишем простой Tab list с prototype.js

November 3rd, 2007 by pilot

Как я написал свой Tab list и почему не использовал доступные в интернете готовые примеры.

tab_list

Вот примеры Tab листов, которые я раньше использовал:

  1. Dexagogo
  2. Livepipe

На примерах этих tab листов, трудно понять как работает сам механизм связанный с переключаниями между tab’ами.

И один из больших недостатков я не смог застивить работать эти tab листы на динамически вызваных страницах, которые вызваются через методы библиотеки prototype.js (Ajax.Updater и др.). Вот по этой причине я решил написать свой tab лист.

Первое, создаем простой html документ:

<html>
<head>
    <title>Делаем ТАБы</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style>
      /* tab */
      .panel {
        clear: both;
        display: none;
        border: 3px solid #CCC;
        padding: 1em;
      }
      .panel.active-tab-body {
        display: block;
      }
      #tabs {
        list-style: none;
      }
     
      #tabs li {
       float: left; 
      }
     
      #tabs a {
        float: left;
        padding: 2px 8px;
        background-color: #F2F2F2;
        text-decoration: none;
        color: #999999;
      }
     
      #tabs a.active-tab {
        background-color: #CCC;
        border-top: 3px solid #999;
        padding-top: 0px;
        color: #000;
      }
    </style>
    <script type="text/javascript" language="JavaScript" src="/js/scriptaculous/lib/prototype.js"></script>   
</head>

<body>



</body>
</html>

Обратите внимание на кодировку в документе используется UTF-8, так как библиотека prototype.js не дружит с нашими кодировками windowds-1251

Если у вас все же есть необходимость использовать в работе кодировку windows-1251, вам поможет библиотека Дмитрия Котерова JsHttpRequest. Которая полностью совместима с prototype.js

В моем примере tab list я использую CSS стили из проекта Dexagogo.

Перед закрытием тега </head> , добавляем подключение библиотеки prototype.js, которую я использую для переключения между tab’ами, и динамеческой загрузки информации в выбранный tab.

Read the rest of this entry »

Filed under Ajax, Prototype, javascript having 7 Comments »