Internet Explorer忽略缓存? (AJAX call& Datatables)

时间:2016-02-01 16:38:28

标签: spring jsp datatables

我一直在寻找解决方案几个星期但现在无济于事。

我的Web应用程序使用Spring / Hibernate。当我进行AJAX调用以检索我的表的数据时(使用 Datatables ),一切都显示正常。但是,当我单击一个链接然后单击BACK返回到表时,IE和Firefox似乎表现不同:

FIREFOX

  • 显示表页面(AJAX调用);
  • 点击链接转到新页面;
  • 点击返回返回表格页面;
  • 调用数据库DAO NOT 以重新显示数据

INTERNET EXPLORER

  • 显示表页面(AJAX调用);
  • 点击链接转到新页面;
  • 点击返回返回表格页面;
  • 调用数据库DAO IS 以重新显示数据

为什么会发生这种情况?我该如何解决这个问题?基本上我希望IE在这种特殊情况下表现得像Firefox一样。

示例代码(JSP):

$('#tableWithData').DataTable( {
    serverSide : false,
    ajax: {  
         "url": "/app/search/rowData",
        "data": function ( d ) {
            d.searchDeptlCntnrNo   = $('#criteriaDeptlCntnrNo').val();  
            d.searchCntlNoCd       = $('#criteriaCntlNoCd').val();  
            d.searchExactMatch     = $('#criteriaExactMatch').val();                
            d.searchCntlNoCmpnt1   = $('#criteriaCntlNoCmpnt1').val();              
            d.searchCntlNoCmpnt2   = $('#criteriaCntlNoCmpnt2').val();
            d.searchCntlNoCmpnt3   = $('#criteriaCntlNoCmpnt3').val();
            d.searchCntlNoCmpnt4   = $('#criteriaCntlNoCmpnt4').val();
            d.searchRangeField     = $('#criteriaRangeField').val();                
            d.searchCntlNoCmpntQty = $('#criteriaCntlNoCmpntQty').val();
            d.searchCntlNoCmpntRng = $('#criteriaCntlNoCmpntRng').val();

    }},           
    stateSave: true,    
    pagingType: "full_numbers",        
    deferRender: true,        
    scrollY:        400,
    scrollCollapse: true,
    scroller:       true,
    lengthChange:   false,
    "columns": columns,             
    language: {
        "loadingRecords": loading data..."},
    fnInitComplete: function(oSettings, json) {
        $("#loading-div-background").hide();
      },
    language :{
            "emptyTable": "Your query returned 0 results."          
      }

} );    

编辑:

这将是一个BFCache问题,因为我使用JQuery并且它有一个嵌入式onload事件,Internet Explorer无法检索缓存? https://stackoverflow.com/a/1195934/1501426

1 个答案:

答案 0 :(得分:0)

对于遇到同样问题的人,我发现这是:

这是jQuery和Internet Explorer的IE问题:

  

jQuery会自动将卸载事件附加到窗口,所以   不幸的是,使用jQuery将取消您的页面存储在>用于DOM保存和快速返回/转发的bfcache。

https://stackoverflow.com/a/1195934/1501426

看起来我一直坚持这个。现在,当用户点击链接但是IMO时,我会打开一个新窗口,这是一个糟糕的设计。