Json неправильно кэшируется - PullRequest
14 голосов
/ 24 мая 2011

Hy!

Мой JS запрашивает JSON у контроллера для редактирования существующего объекта, заполненного выпадающего списка.

Затем View отправляет фактические значения из моего выпадающего списка с автозаполнением, чтобы в последнее время сравнивать новое значение со старым и сохранять новые значения.

Это как список людей. Когда я загружаю страницу, в моем ddl есть несколько человек, и я могу добавлять или удалять людей.

Это мой контроллер:

    [HttpGet]
    public JsonResult JSON(int order)
    {
        IEnumerable<Person> persons = dataServ.Envolvidos.GetPerson( order )
        return this.Json( new { Result = persons }, JsonRequestBehavior.AllowGet );
    }

И мой Json позвонил:

$.getJSON("/Order/JSON", { order: $("#Id").val() }, function (data) {
   ...
});

Все идет хорошо, за исключением того, что И.Е. кэширует этот JSON, и когда я отправляю новые значения и снова возвращаюсь к редактированию страницы, вместо новых появляются старые значения. Но новые значения хранятся в базе данных, как и должно быть.

Я тестировал на Chrome и Firefox, и после того, как я отредактировал и снова пришёл редактировать, он сделал новый вызов json и там есть новые значения, отличные от I.E.

Я что-то упустил? Что я должен сделать, чтобы результат JSON не кэшировался?

Ответы [ 2 ]

20 голосов
/ 24 мая 2011

Это отключит кеширование для jQuery ajax:

jQuery.ajaxSetup({ cache: false });
8 голосов
/ 24 мая 2011

Я считаю, что IE кеширует JSON-запросы по умолчанию, в отличие от других браузеров. Вам придется вручную включить соответствующие заголовки, чтобы запретить кэширование ответа. Это не повредит существующим браузерам, которые уже не кэшируются, а будет более явным.

...