2017-04-05 52 views
0

我有一個asp.net MVC5應用程序使用knockoutjs的意見。IE11 Ajax Request Only如果開發工具打開

我有以下頁面上的「刷新」按鈕的一個問題:

summarypage

按一下按鈕被綁定到以下Ajax請求:

self.get = function() { 
     $loadingIndicator.show(); 

     $.ajax({ 
      url: BASE_URL + 'APInvoicesSummary/GetRecords', 
      type: 'get', 
      data: { 
       'cache': false, 
       'page': self.pagingOptions.currentPage(), 
       'pageSize': self.pagingOptions.pageSize(), 
       'filter': self.filterOptions.filterText == undefined ? '' : self.filterOptions.filterText(), 
       'sort': self.sortInfo().column.field + ' ' + self.sortInfo().direction 
      }, 
      contentType: 'application/json; charset=utf-8', 
      success: function (data) { 
       self.pagingOptions.totalServerItems(data.RecCount); 

       var recsArray = []; 
       $.each(data.PageOfRecords, function (key, value) { 
        recsArray.push(
         new rec(
          moment(value.DateReceived).format('DD/MM/YYYY HH:mm ss'), 
          value.BatchRef, 
          value.Control_NumOfItems, 
          Math.round(value.Control_Value * 100)/100, 
          value.Control_LinkToArchive, 
          value.Rejected_NumOfItems, 
          value.Rejected_Value, 
          value.Accepted_NumOfItems, 
          Math.round(value.Accepted_Value *100)/100, 
          value.RejectedLineNumbers, 
          value.LinkToEditBatch 
          ) 
        ); 
       }); 
       self.recs(recsArray); 
      } 
     }); 

這裏是結合:

<div id="Refresh"> 
    <button type="button" class="btn btn-default btn-md refresh-button" data-bind="click: get"> 
     <span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Refresh 
    </button> 
</div> 

一切正常fi fi ne與Chrome,但在IE11中運行時,除非F12開發工具處於打開狀態,否則單擊該按鈕不起作用 - 那麼它就可以正常工作。我可以看到小提琴手,沒有開放的開發工具,沒有請求。

任何想法?

我已經在其他地方看過,這可以歸結爲JavaScript中的console.log代碼,但我已經完成了搜索並且找不到任何東西。

+0

IE瀏覽器緩存AJAX的壞習慣GET請求積極。嘗試使用POST,或使用緩存清除技術(如將當前時間戳附加到URL)。 – CBroe

回答

1

我創建了下面的自定義ActionFilterAttribute

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] 
public sealed class NoCacheAttribute : ActionFilterAttribute 
{ 
    public override void OnResultExecuting(ResultExecutingContext filterContext) 
    { 
     filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); 
     filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false); 
     filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
     filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     filterContext.HttpContext.Response.Cache.SetNoStore(); 

     base.OnResultExecuting(filterContext); 
    } 
} 

我再點綴包含動作控制器類我KnockoutJS被調用Ajax來:

[NoCache] 
public class APInvoicesSummaryController : APInvoicesBaseController 
{ 
+0

這是正確的解決方案。 – Tomalak