jQuery没有在IE中第二次通过MVC控制器

Pap*_*ndy 1 asp.net-mvc jquery internet-explorer jquery-ui

我会开始说这在Chrome和Firefox中完美运行,但不适用于IE(IE9).

期望的行为:我的页面上有一个包含超链接的部分视图.当您单击超链接时,它使用jQuery函数弹出一个对话框以输入新的注释.关闭对话框时,应使用新计数刷新部分视图.

在IE中,它适用于第一次传递,但不是后续传递.

我正在使用jQuery 1.6.1和jQuery UI 1.8.13进行对话.

这是我的函数,它被超链接调用,我已经确认它每次都会点击这个函数,只是在调用.load时没有进入控制器(或者它忽略了close函数):

function showNoteDialog(id) {
    //alert(id);
    var dialogOpts = {
        title: 'Add Note',
        modal: true,
        autoOpen: false,
        height: 600,
        width: 600,
        closeOnEscape: true,            
        open: function (event, ui) {
            jQuery.ajaxSetup({ cache: false });
            //display correct dialog content
            $('#noteDialog).load('<%= Url.Action("ModalNoteEdit","Notes")%>', { id: id });
        }
        ,
        // refresh the partial view
        close: function (event, ui) {
            $('#noteList).load('<%= Url.Action("NoteList","Notes")%>');                
        }
    };
    $('#noteDialog).dialog(dialogOpts);
    $('#noteDialog).dialog('open');

    //end dialog
    return false;
}
Run Code Online (Sandbox Code Playgroud)

Fly*_*per 5

我打赌IE正在缓存ModalNoteEdit操作的结果.我会尝试做一些事情来阻止缓存.也许设置一个响应头,或者为每次更改的请求添加一个查询字符串.例如:

$('#noteDialog).load('<%= Url.Action("ModalNoteEdit","Notes")%>' + Date.now(), { id: id });
Run Code Online (Sandbox Code Playgroud)

  • 这是一个CACHE问题.我添加了jQuery.ajaxSetup({cache:false}); 在关闭功能,它工作正常. (4认同)