首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery对话框缓存在表单加载中的应用

问jquery对话框缓存在表单加载中的应用
EN

Stack Overflow用户
提问于 2011-11-15 02:12:03
回答 4查看 5.6K关注 0票数 1

使用ASP.NET MVC3 (Razor),我有一个简单的页面来加载jQuery UI对话框。

代码语言:javascript
复制
@{
    ViewBag.Title = "Home Page";
}
<h2>yo</h2>
<div id="fileUpload">
</div>
<button id="button2">
    Upload file
</button>
<script type="text/javascript">
    $(document).ready(function () {
        $('#button2').click(function () {
            $fileUpload = $('#fileUpload');
            $fileUpload.dialog({
                minWidth: 500,
                minHeight: 100,
                title: 'Upload File(s)',
                autoOpen: true,
                buttons: {
                    'Upload': function () {
                        $('form').submit();
                    },
                    'Cancel': function () {
                        $(this).dialog('close');
                    }
                },
                open: function (event, ui) {
                    $(this).load('@Url.Action(MVC.FileUpload.FileUpload())');
                },
                close: function (event, ui) {
                    $(this).dialog('destroy');
                    //$(this).remove();
                },
                dialogClass: 'no-close',
                closeText: '',
                modal: true
            });
        });
    });
</script>

注意open()表单调用一个控制器方法。它返回一个PartialView,看起来像这样.

公共虚拟ActionResult FileUpload() {返回新的PartialViewResult();}

我遇到的问题是IE缓存对部分视图的调用。如果更新部分视图,则在清除浏览器缓存之前它不会加载。

我已经在close()和.remove()上尝试了“破坏”方法。两者都没有效果。我还确认,每次单击# time 2时都会调用open()。

关于如何防止对话框内容被缓存,有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-15 02:22:15

您可以将其添加到全局js代码中,以防止IE缓存ajax请求:

代码语言:javascript
复制
$.ajaxSetup({ cache: false });
票数 5
EN

Stack Overflow用户

发布于 2011-11-15 07:01:43

你可以替换:

代码语言:javascript
复制
 $(this).load('@Url.Action(MVC.FileUpload.FileUpload())');

通过以下方式:

代码语言:javascript
复制
$.ajax({
    url: '@Url.Action(MVC.FileUpload.FileUpload())',
    cache: false,
    context: this,
    success: function(result) {
        $(this).html(result);
    }
});
票数 2
EN

Stack Overflow用户

发布于 2011-11-15 02:20:07

将属性NoCache添加到控制器操作中,以解决此问题。这种情况只发生在IE中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8130681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档