bootstrap 3 ajax loading modals - 每次都是相同的内容

时间:2013-12-01 08:05:29

标签: twitter-bootstrap-3

使用bootstrap 3 ajax模态......例如:

<a href="/process/modal.php" data-target="#cmodal" data-toggle="modal">Delete this</a>

<div class="modal fade" id="cmodal" tabindex="-1" role="basic" aria-hidden="true">
    <img src="/assets/img/ajax-modal-loading.gif" alt="" class="loading">
</div>

多次单击模式永远不会刷新内容。它总是被缓存。我在这里搜索和阅读了很多,并且有很多选项,但非常相似。

我决定:

$("div[id^='cmodal']").on('hidden.bs.modal',
    function () {
        $(this).removeData('bs.modal');
    }
);

这应该允许我使用模式id,它以cmodal开头,后面是任何东西,而不是'缓存'内容。

它不起作用。即使使用特定的ID名称也不起作用。我尝试了在BS上找到的其他方法用于BS3,但这些方法不起作用。这笔交易是什么?他们真的提供了每次都没有'刷新'的模态加载吗?使用它的整个模态功能是无用的,无法更改内容。

1 个答案:

答案 0 :(得分:0)

确实是从服务器缓存导致问题。

在htacess中我现在使用以下命令强制不对php文件进行缓存。结合模态的代码,这解决了问题,我现在可以在模态中使用动态内容(php)。

<FilesMatch "\.(php)$">
    ExpiresDefault "access plus 0 seconds"
    Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0"
    Header set Pragma "no-cache"
</FilesMatch>

我还稍微修改了模态代码,以便更普遍应用。没有理由担心此方法中的ID名称,并且始终为bootstrap 3中的模态设置类。

$('.modal').on('hidden.bs.modal',
    function() { 
        $(this).removeData('bs.modal');
    }
);