Как стать автором
Обновить

Prototype, Ajax.PeriodicalUpdater и Internet Explorer

Время на прочтение1 мин
Количество просмотров982
Довольно простой код для использования Ajax.PeriodicalUpdater предлагается в описании API на официальном сайте prototype

new Ajax.PeriodicalUpdater('items', '/items', {
  method: 'get', frequency: 3, decay: 2
});


Все вроде хорошо, но сегодня наткнулся на грабли при работе в IE, а именно скрипт не выполнял своего прямого предназначения — не обновлял контейнер по таймеру.

Искал решение долго и упорно, но в рунете ничего внятного не нашел (возможно, искал не так долго и упорно, как того требовалось бы). А вот покопавшись по забугорским сайтам наткнулся на такую статью: blog.innerewut.de/2007/9/22/ie-doesn-t-let-us-rest

И тогда проблему решил следующим способом:

new Ajax.PeriodicalUpdater('items', '/items', {
  method: 'post', frequency: 3, decay: 2
});


IE, просто, кеширует GET запросы в ajax (в том числе и при PeriodicalUpdater). Победить можно либо посылая различные параметры при каждом GET запросе, либо использовать POST. Данное решение снимает все проблемы и позволяет обновлять нужный нам контейнер во всех браузерах. Ура! (:

P.S. при программирование на Ruby переключение на POST не столь просто, поэтому придется повозиться — как именно показано в статье blog.innerewut.de/2007/9/22/ie-doesn-t-let-us-rest.

x-posted: n0ns3ns3.livejournal.com/236264.html
Теги:
Хабы:
Всего голосов 11: ↑9 и ↓2+7
Комментарии19

Публикации