Fancybox избегает кеширования ajax-запросов - PullRequest
0 голосов
/ 31 мая 2019

В настоящее время я сталкиваюсь с досадной (подозреваемой) проблемой кеша в fancybox 3.4.1:

<a data-fancybox="" data-type="ajax" data-src="src/views/forms/SpeiseplanCreateForm.php?ValidFrom=1560117600" href="javascript:;" id="fancybox-SpeiseplanCreateForm"><button id="fancybox-SpeiseplanCreateForm-button">Speiseplan bearbeiten</button></a>

имеет параметр GET, который затем оценивается моим PHP-скриптом, однако, когда я нажимаю на негов первый раз он работает нормально, но когда я изменяю значение ValidFrom через JavaScript и пытаюсь открыть окно во второй раз, параметр get остается таким же, как и в первом вызове.Я предполагаю, что это связано с кэшированием запросов в fancybox.

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

     <script>
        $(document).ready(function() {
         $(".data-fancybox").fancybox({
         type       : 'ajax',
         ajax       : { cache: false }
          });
        });
    </script>    

, как предложено здесь: https://stackoverflow.com/a/17621281/4934937

Есть ли способ отключить кеш?

1 Ответ

0 голосов
/ 31 мая 2019

Я только что нашел очень грязное решение для этого.После редактирования элемента в Firefox (Edit HTML) все заработало.Поэтому я догадался, что это должно иметь что-то общее с каким-то странным кэшированием (браузер или fancybox, кто знает).

Обходной путь - создать новый элемент a, удалить старый a и снова добавить его к родителю старого a.

let newElement = document.createElement("a");
newElement.setAttribute("id","fancybox-"+id)
newElement.setAttribute("data-fancybox","");
newElement.setAttribute("data-type","ajax");
newElement.setAttribute("href","javascript:;");
newElement.setAttribute("data-src",fancyboxSrc);
newElement.appendChild(button);

fancybox.outerHTML = "";
parent.appendChild(newElement);
...