Как установить кеш: false в вызове jQuery.get

jQuery.get() является сокращением для jQuery.ajax() с вызовом get. Но когда я устанавливаю cache:false в данных .get() , то, что отправляется на сервер, является параметр, называемый кешем со значением false. Хотя я намерен отправить временную метку с данными на сервер, чтобы предотвратить кеширование, что происходит, если я использую cache: false в данных jQuery.ajax. Как это сделать, не переписывая вызовы jQuery.get на вызовы jQuery.ajax или используя

 $.ajaxSetup({ // Disable caching of AJAX responses cache: false }); 

update: Спасибо всем за ответы. Вы все правы. Тем не менее, я надеялся, что есть способ позволить получить звонок знать, что вы не хотите кэшировать или отправить это значение в базовый .ajax (), чтобы он знал, что с ним делать.

Я а. ищет четвертый путь, отличный от трех способов, которые были определены до сих пор:

  1. Делать это глобально через ajaxSetup

  2. Использование вызова .ajax вместо вызова .get

  3. Выполняйте его вручную, добавив новый параметр, содержащий метку времени для вашего вызова .get.

Я просто подумал, что эта возможность должна быть встроена в вызов .get.

7 Solutions collect form web for “Как установить кеш: false в вызове jQuery.get”

Для меня правильным было бы это сделать. Либо ajax либо ajaxSetup . Если вы действительно хотите использовать get и не использовать ajaxSetup тогда вы можете создать свой собственный параметр и дать ему значение текущей даты / времени.

Однако я бы поставил под сомнение ваши мотивы, не используя один из других методов.

Добавьте параметр самостоятельно.

 $.get(url,{ "_": $.now() }, function(rdata){ console.log(rdata); }); 

Начиная с jQuery 3.0, вы можете сделать следующее:

 $.get({ url: url, cache: false }).then(function(rdata){ console.log(rdata); }); 

Я думаю, вам нужно использовать метод AJAX, который позволяет вам отключить кеширование:

 $.ajax({ url: "test.html", data: 'foo', success: function(){ alert('bar'); }, cache: false }); 

В документации JQuery .get() только url , data (контент), dataType и обратный вызов success качестве своих параметров. То, что вы действительно хотите сделать, это изменить объект jqXHR до его отправки. С .ajax() это делается с помощью beforeSend() . Но поскольку .get() является ярлыком, он не позволяет этого.

Должно быть относительно легко переключать .ajax() вызовы .get() . В конце концов, .get() является всего лишь подмножеством .ajax() , поэтому вы можете использовать все значения по умолчанию для .ajax() (за исключением, конечно, для beforeSend() ).

Редактировать:

:: Смотрит на ответ Jivings ::

О да, забыл о параметре cache ! Хотя beforeSend() полезен для добавления других заголовков, здесь здесь намного проще использовать параметр встроенного cache .

Установить кеш: false в вызове jQuery.get с использованием метода ниже

используйте новую Date().getTime(), которая будет избегать коллизий, если у вас не будет нескольких запросов, происходящих в пределах той же миллисекунды.

Или

Следующее предотвратит кэширование всех будущих запросов AJAX, независимо от того, какой метод jQuery вы используете ($ .get, $ .ajax и т. Д.).

 $.ajaxSetup({ cache: false }); 

Я очень опаздываю в игре, но это может помочь другим. Я столкнулся с этой проблемой с $ .get, и я не хотел слепо отключать кеширование, и мне не нравился патч timestamp. Поэтому после небольшого исследования я обнаружил, что вы можете просто использовать $ .post вместо $ .get, который НЕ использует кеширование. Просто как тот. 🙂

Обратите внимание, что синтаксис обратного вызова устарел :

Уведомление об изъятии

Методы обратного вызова jqXHR.success (), jqXHR.error () и jqXHR.complete (), введенные в jQuery 1.5, устарели из jQuery 1.8. Чтобы подготовить код для их возможного удаления, вместо этого используйте jqXHR.done (), jqXHR.fail () и jqXHR.always ().

Здесь модернизированное решение с использованием интерфейса promise

 $.ajax({url: "...", cache: false}).done(function( data ) { // data contains result }).fail(function(err){ // error }); 
  • Как удалить кэш других приложений из нашего приложения для Android?
  • Отключение кеширования браузеров для всех браузеров из ASP.NET
  • Новое кэширование изображений Gmail разбивает ссылки на изображения в информационном бюллетене
  • Расseleniumие изображения UIImageNamed: FUD
  • Метод getDrawingCache () Android 2.1 View всегда возвращает значение null
  • В чем разница между кодом состояния HTTP 200 (кеш) и кодом состояния 304?
  • Есть ли способ удержать страницу от рендеринга, когда человек вышел из системы, но нажал кнопку «назад»?
  • ASP.NET MVC как отключить опцию автоматического кэширования?
  • Как написать код, который лучше всего использует кеш процессора для повышения производительности?
  • Кэширование в asp.net-mvc
  • ASP.NET MVC и кэширование IE - управление заголовками ответов неэффективно
  • Interesting Posts

    Полоса пропускания и перетаскивания пробелов из строки Java

    Получение java.net.SocketTimeoutException: время ожидания подключения в android

    Как скопировать файл java.util.List в другой файл java.util.List

    Как я могу программно остановить / запустить службу Windows в удаленном окне?

    Как отключить автоматическое обновление с Windows 8.0 до 8.1?

    Как установить Linux на динамический диск без потери конфигурации диска?

    Почему терминал говорит: «У вас есть почта»?

    Как переместить окно с клавиатурой на Mac?

    Работает ли антивирус во время работы на виртуальной машине?

    В Windows запуск «import tensorflow» не генерирует модуль с именем «_pywrap_tensorflow»

    Как я могу перечислить все classы, загруженные в определенный загрузчик classов

    Rails 3.1 и Image Assets

    Кнопки расширения Chrome Condense

    Увеличивает масштаб изображения веб-сайта Selenium

    API Карт Google для получения маршрута автобуса

    Давайте будем гением компьютера.