Остановить кеширование ответа jQuery .load - PullRequest
239 голосов
/ 04 октября 2008

У меня есть следующий код, выполняющий запрос GET по URL:

$('#searchButton').click(function() {
    $('#inquiry').load('/portal/?f=searchBilling&pid=' + $('#query').val());            
});

Но возвращаемый результат не всегда отражается. Например, я внес изменение в ответ, которое выдает след стека, но след стека не появился, когда я нажал на кнопку поиска. Я посмотрел на базовый код PHP, который контролирует ответ ajax, и он содержал правильный код, и посещение страницы напрямую показало правильный результат, но результат, возвращаемый .load, был старым.

Если я закрою браузер и снова открою его, он будет работать один раз, а затем начнет возвращать устаревшую информацию. Могу ли я управлять этим с помощью jQuery или мне нужны заголовочные файлы PHP-скрипта для управления кэшированием?

Ответы [ 14 ]

0 голосов
/ 09 июля 2014

Если вы хотите придерживаться метода Jquery .load (), добавьте в URL что-то уникальное, например временную метку JavaScript. msgstr "+ новая дата (). getTime ()". Обратите внимание, что мне пришлось добавить «& time =», чтобы он не изменил вашу переменную pid.

$('#searchButton').click(function() {
$('#inquiry').load('/portal/?f=searchBilling&pid=' + $('#query').val()+'&time='+new Date().getTime());            
});
0 голосов
/ 29 мая 2014

Этот код может помочь вам

var sr = $("#Search Result");
sr.load("AJAX-Search.aspx?q=" + $("#q")
.val() + "&rnd=" + String((new Date).getTime())
.replace(/\D/gi, ""));
0 голосов
/ 15 августа 2011

Я заметил, что если некоторые серверы (например, Apache2) не настроены специально для разрешения или запрета какого-либо «кэширования», то сервер может по умолчанию отправлять «кэшированный» ответ, даже если для заголовков HTTP установлено «no-». кэш». Поэтому убедитесь, что ваш сервер ничего не "кэширует", прежде чем отправит ответ:

В случае Apache2 вы должны

1) отредактируйте файл "disk_cache.conf" - для отключения кэша добавьте директиву "CacheDisable / local_files"

2) загрузка модулей mod_cache (в Ubuntu "sudo a2enmod cache" и "sudo a2enmod disk_cache")

3) перезапустите Apache2 (Ubuntu "sudo service apache2 restart");

Это должно сделать хитрость отключения кэша на стороне сервера. Ура! :)

0 голосов
/ 11 ноября 2009

Попробуйте это:

$("#Search_Result").load("AJAX-Search.aspx?q=" + $("#q").val() + "&rnd=" + String((new Date()).getTime()).replace(/\D/gi, ''));

Хорошо работает, когда я его использую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...