Как и многие потерянные души до меня, я барахтаюсь в яме со змеями, которая представляет собой отправку формы Ajax и кеширование в браузере IE.
Я пытаюсь написать простой скрипт, использующий плагин jQuery Form для Ajaxify комментариев Wordpress. Он отлично работает в Firefox, Chrome, Safari и др. al., но в IE текст ответа кэшируется, в результате чего Ajax получает неправильный комментарий.
jQuery(this).ajaxSubmit({
success:
function(data) {
var response = $("<ol>"+data+"</ol>");
response.find('.commentlist li:last').hide().appendTo(jQuery('.commentlist')).slideDown('slow');
}
});
ajaxSubmit отправляет комментарий в wp-comments-post.php, который неуверенно выплевывает всю страницу в ответ. Таким образом, несмотря на то, что это ужасно, как жабы, я помещаю текст ответа в переменную, используя: last, чтобы изолировать самый последний комментарий, и сдвигаю его на место.
IE, однако, возвращает кэшированную версию страницы, которая не содержит новый комментарий. Поэтому «.commentlist li: last» выбирает предыдущий комментарий , дубликат которого бесполезно скользит вниз под оригиналом.
Я пытался установить «cache: false» в параметрах ajaxSubmit, но это не имеет никакого эффекта. Я попытался установить параметр URL-адреса и использовать случайное число или временную метку, но в итоге он подключается к POST, который отправляет комментарий на сервер, а не к GET, который возвращает ответ, и поэтому не имеет никакого эффекта. Я не уверен, что еще попробовать. В IE все работает нормально, если я отключаю кеширование браузера, но, очевидно, это не то, чего я могу ожидать от любого, кто просматривает страницу.
Любая помощь будет высоко оценена. Заранее спасибо!
РЕДАКТИРОВАНИЕ С ОТЧЕТОМ О ПРОГРЕССЕ : Несколько человек предложили использовать заголовки PHP для предотвращения кэширования, и это действительно работает. Проблема в том, что wp-comments-post выплевывает всю страницу при отправке нового комментария, и единственный способ увидеть, как я могу добавить заголовки, - это поместить их в шаблон поста Wordpress, который вообще отключает кэширование всех постов. времена - не совсем то поведение, которое я ищу.
Есть ли способ установить условное выражение php - «if is_ajax» или что-то в этом роде - так, чтобы заголовки не применялись во время обычной загрузки страниц, но подключались ли они, если страница была вызвана Ajax GET?