Ваши ответы кэшируются, поэтому вам нужно это предотвратить. В случае использования jQuery существует три широко используемых решения.
Настройка jQuery (указывает AJAX-вызовам не кэшировать результаты)
$(document).ready(function(){
$.ajaxSetup({
cache: false
});
});
Случайное начальное число (при добавлении в URL сервер заставляет поверить в новый запрос)
$.ajax({
type:"POST",
url: 'sample.php?rnd=' + Math.random(),
data:"data="+data,
success: function(server_response) {
//... rest of the code
});
Использование текущей метки времени в качестве начального числа (аналогично предыдущему, за исключением использования текущей метки времени)
$.ajax({
type:"POST",
url: 'sample.php?rnd=' + Date().getTime(),
data:"data="+data,
success: function(server_response) {
//... rest of the code
});
Первый вариант удобен в том случае, если на одной странице выполняется много запросов AJAX без реальных недостатков.
Второй вариант почти всегда является хорошим выбором. У него тоже нет особых минусов.
Третий вариант также хорош, но он может быть опасен на страницах, которые выполняют более одного AJAX-запроса в секунду, поскольку иногда одна и та же временная метка может использоваться для двух разных запросов, и последующий вызов будет получать кэшированные данные.
РЕДАКТИРОВАТЬ: Если на странице нет $(document).ready()
, его можно добавить в раздел заголовка непосредственно перед конечным тегом </head>
.
<head>
<!-- Whatever code already exists in the head section -->
<script type="text/javascript">
$(document).ready(function(){
$.ajaxSetup({
cache: false
});
});
</script>
</head>