| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Применение библиотек > Ajax и кэш. Есть проблема |
| Автор: Panoramix 26.3.2007, 13:40 | ||||||
| Здравствуйте! Есть проблема (судя по результатам гугла, не только у меня). Существует достаточно сложная форма для отправки новостей на сайт. Она принимает либо html, либо bbcode (в зависимости от переключателя (id: use_html_box). Кроме кнопки "отправить" внизу существуют ещё две кнопки: "предпросмотр" (id: preview_button) и "получить html" (id: html_button). Обе сделаны на AJA,
причём абсолютно одинаковым способом. Первая посылает запрос на php-скрипт, получает спарсированный из bbcode html-код и отображает его внутри div'а (id: news_preview), появляющегося вместо формы (id: news_edit), а вторая - тот же код, только с заменёнными на символы угловыми скобками и пр. (php-функция htmlspecialchars()), после чего отображает его в нередактируемом textarea (id: html_response), появляющемся на месте textarea для редактирования статьи (id: news_body). Обе кнопки при повторном нажатии возвращают форму на место. JS-код:
Как видите, обе функции построены совершенно одинаково, и, более того, при тестировании с помощью FireBug становится видно, что они возвращают совершенно правильные ответы с сервера. ОДНАКО: Если в IE всё отлично работает, то в Opera и Firefox кнопка "предпросмотр" работает без проблем, а вот такая же кнопка "получить html" даже при правильном ответе с сервера первое нажатие после перезагрузки отображает нормально, а вот при последующих каждый раз берёт информацию из кэша, то есть не хочет обновлять её, а отображает то, что было запрошено в первый раз! Я использовал всё, что советуют по этому поводу в интернете (случайные переменные, дописанные к URL, заголовки "no-cache" в php) - но ничего не помогло!!! Я не понимаю, что делать - если кто-нибудь сталкивался с таким, пожалуйста, помогите! P.S. Вот код использованной мною библиотеки Aja(x) - объект AjaxInteraction():
|
| Автор: Бонифаций 26.3.2007, 14:17 | ||
| Я сталкивался с этим, и нашел комбинацию, которая вроде работает во всех browser. В ajax - ответе (то есть в том что у вас обрабатывает $_SERVER['SCRIPT_NAME']?>?action=get_html&rand="+Math.random() ) устанавливаю
PS. у меня это jsp, так что на php сами уж как-нибудь переведите |
| Автор: Panoramix 26.3.2007, 19:39 | ||
| спасибо, сейчас попробую.. p.s. Moderator: AJA, в отличие от AJAX - это просто Асинхронный JavaScript, без XML..
|
| Автор: Panoramix 26.3.2007, 19:57 | ||
| Не помогает. Попробовал и опубликованную комбинацию, и сам чего-то менял, ничего. Если кому интересно, на PHP оно выглядит так:
Ни-че-го-не-по-ни-ма-ю... Firefox, Opera, Больше всего поражает то, что одна кнопка работает, а другая, такая же! - нет... |
| Автор: Panoramix 26.3.2007, 20:54 | ||||
Только что обнаружилась престранная вещь. Если в параметре-функции AjaxInteraction вместо всего прописать тупое alert(text) - то... оно выдаёт правильный результат!!! Кэш текстового поля? =) Я в замешательстве. Сейчас буду разбираться.. Добавлено через 11 минут и 15 секунд Люди!!! Всем спасибо за попытки помочь, но над моими багами вы, к сожалению, не властны, т.к. не имеете к ним доступа, они у меня в мозгах. Всё дело не в кэше и не в Aja(Moderator - ), а в том, что Firefox'у и Опере не нравится конструкция
Они с её помощью дают обновить поле только один раз, Бог знает почему.. А вот такая фишка:
..меняет всё дело. Занавес. Тему можно удалить из-за её неоспоримой глупости. |
| Автор: Бонифаций 26.3.2007, 21:19 |
| А чем вызвано то что вы ручками всякие там [textarea].innerHTML устанавливаете? Почему не (скажем) проверенный в боях prototype.js ? |
| Автор: Panoramix 27.3.2007, 14:49 |
| Почему не использую сторонние библы? Потому что в них много лишнего, а в своей я использую только то, что мне нужно. А что такое prototype.js? |
| Автор: Бонифаций 27.3.2007, 14:52 |
| http://www.prototypejs.org/ |