Как установить кэш false для getJSON в jQuery?

Я использую getJSON для получения результатов со стороны сервера, но сталкиваюсь с проблемами кэша браузера. Я хочу, чтобы кеш был ложным. Я пытался использовать это как раз перед моим вызовом getJSON.

 $.ajaxSetup({
                cache: false
            })

Но я не получаю ожидаемых результатов. Это все еще показывает старые результаты.

Я также определил некоторые другие решения, такие как использование .ajax, но я действительно не хочу использовать это.

Ответ 1

Для вашего кода нужен только триггер для его включения.

Это позволит вам отключить кеш во всех будущих ajax

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

Надеюсь, это поможет:)

Ответ 2

Вы можете использовать либо это, чтобы отключить кеш глобально:

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

или вместо $.getJSON отключить кеш только для такого запроса:

$.ajax({
    cache: false,
    url: "/path/to.json",
    dataType: "json",
    success: function(data) {
        ...
    }
});

Ответ 3

Ответы

semente и bonesnatch верны, но если вы хотите использовать $.getJSON и в других местах, воспользуйтесь его кешированием (вы не хотите, чтобы кеш был ложным для всех вызовов), но вы хотите сбросить кеш только для одного вызова вы можете ввести временную метку в свойство данных $.getJSON(). Добавив уникальное значение в строку запроса запроса, запрос всегда будет уникальным и не будет кэшироваться браузером - вы всегда будете получать последние данные.

Длинная версия:

var ts = new Date().getTime();
var data = {_: ts};
var url = '/some/path.json';

$.getJSON(url, data);

Все в одной версии:

$.getJSON('/some/path', {_: new Date().getTime()});

Оба результата приводят к следующему запросу:

/some/path.json?_=1439315011130 

где число в конце - это метка времени на момент вызова кода и поэтому всегда будет уникальной.