Задержка сохранения переменных сеанса в IE 11? - PullRequest
1 голос
/ 07 октября 2019

У меня есть приложение, которое использует Ajax-вызов для извлечения переменных сеанса с помощью PHP-скрипта. Во всех браузерах это работает идеально, но в IE 11 это происходит только после перезагрузки страницы. Поэтому, когда страница загружается, Ajax-вызов возвращает null, но когда я перезагружаю страницу, он возвращается.

$.ajax({
    type: "GET",
    url: "/ajax/fetch/session",
    success: function(data) {
        obj_fields = $.parseJSON(data);
        console.log(obj_fields);
    }
});

Поскольку я использую это в многостраничной форме, когда значения каждой страницы сначала сохраняются в сеансе, я заметил, что, например, когда я заполняю первую страницу, отправляю на следующую страницу, мне нужноперезагрузить, чтобы получить сессию. Переходя со страницы 2 на страницу 3, загружаются переменные сеанса со страницы 1, но те, которые сохраняются со страницы 2 только после перезагрузки страницы. Единственное, о чем я могу думать, это то, что IE требуется некоторое время для хранения переменных в сеансе.

Это правильно? Как я могу наилучшим образом решить проблему, подобную этой?

Или возвращаемые значения вызовов Ajax каким-то образом кэшируются в IE?

Я уже пробовал с задержкой в ​​5 секунд перед выполнением вызова Ajax, ноэто тоже не работает. Только при перезагрузке страницы

Ответы [ 2 ]

1 голос
/ 07 октября 2019

По умолчанию для кеша установлено значение true, попробуйте отключить следующим образом:

$.ajax({
    type: "GET",
    url: "/ajax/fetch/session",
    cache: false,
    success: function(data) {
        obj_fields = $.parseJSON(data);
        console.log(obj_fields);
    }
});

кеш (по умолчанию: true, false для dataType 'script' и 'jsonp') Тип: Boolean Ifпри значении false браузеры не будут запрашивать запрашиваемые страницы. Примечание. Установка для кэша значения false будет корректно работать только с запросами HEAD и GET. Это работает путем добавления "_ = {timestamp}" к параметрам GET. Параметр не нужен для других типов запросов, кроме IE8, когда выполняется POST для URL, который уже был запрошен GET.

https://api.jquery.com/jquery.ajax/

0 голосов
/ 07 октября 2019

Это может быть проблема с именем компьютера сервера. Поверьте мне, Internet Explorer кажется мусором.

У меня был такой опыт в прошлом.

Вам нужно будет изучить имя сервера компьютера. Internet Explorer всегда имеет проблемы с именами компьютеров, которые имеют '-' или '_' - или любые другие странные символы, и с этим, IE не может легко поддерживать сеанс php.

Вам потребуетсяубедитесь, что имя машины не содержит символов, которые оно не IE понимает. Или лучше использовать IP-адрес сервера вместо имени машины.

Например, имя машины, например 2_6.nancy.com , не будет работать, но 26.nancy.com все будет в порядке и так далее ...

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