Браузер не вызывает новый запрос Ajax при перезагрузке страницы - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть настройки в моем Ajax-запросе не хранить кеш.Я также добавил строку запроса в качестве параметра в URL для вызова нового Ajax-запроса.Но всякий раз, когда я обновляю страницу, я вижу старый контент на странице.Мне всегда приходится сильно обновлять страницу, чтобы увидеть обновленный контент.Заголовки запроса передаются браузеру правильно, который я установил в свойствах ajaxНо почему мне всегда приходится сильно обновлять, чтобы получить обновленный контент.Как я могу загрузить новый контент только на странице обновления.Я вставил свой Ajax ниже

Методы AJAX для установки свойств

    $.ajaxPrefilter(function (options, originalOptions, jqXHR) {
        if (options.type == 'POST') {
            options.url +=  '?' + Date.now();
        }
    });

    $.ajaxSetup({
        cache: false,
        headers: {
        'Cache-Control':'max-age=0, public'
        },
    });

Мой JQuery

 $.ajax({
                            url: "/Configuration/TestPlan/GetUserList",
                            type: 'POST',
                            cache: false,
                            dataType: 'json',
                            // async :false,
                            beforeSend: function () {
                                //call pageloader 
                                showImageLoader();
                            },
                            data:jsonString,
                            contentType: "application/json; charset=utf-8",
                            success: function (data) {

1 Ответ

0 голосов
/ 20 сентября 2019

С jquery - ajax - «Если задано значение false, браузер не будет запрашивать кэширование запрошенных страниц. Примечание: установка false для кэша будет корректно работать только с запросами HEAD и GET» -

Так что я не думаю, что опция кэширования делает то, что вы думаете.Так как это POST, единственное, что повлияет на очистку кеша, это небольшой фрагмент, который у вас есть:

$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
        if (options.type == 'POST') {
            options.url +=  '?' + Date.now();
        }
    });

Каждый раз, когда он делает запрос - эта страница фактически кэшируется.Он просто создает новый Date.now () - тогда этот URL-адрес создается, пока вы не создадите новый Date.now ().

Итак, когда вы закомментируете это - последняя запрашиваемая страница / данные кешируются, и теперь вы закомментировали единственное, что обновляет кешбастер.

Возможно, просто примените очистку кэша непосредственно к необработанному вызову:

 $.ajax({
    url: "/Configuration/TestPlan/GetUserList?" + Date.now(),
    type: 'POST',
    cache: false,
    dataType: 'json',
    // async :false,
    beforeSend: function () {
    //call pageloader 
        showImageLoader();
    },
    data:jsonString,
    contentType: "application/json; charset=utf-8",
    success: function (data) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...