2017-04-05 3 views
0

viewにknockoutjsを使用するasp.net MVC5アプリがあります。IE11 Ajaxリクエストのみデベロッパーツールを開く場合

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> 

すべてが機能しますIE 11で動作している場合は、F12 Dev Toolsが開いていないとボタンをクリックしても効果はありません。私は、Dev Toolsが公開されていなければ、リクエストは行われないことをフィドラーで見ることができます。

すべてのアイデア?

私はこれがjavascriptのconsole.logコードになる可能性がありますが、私は検索を行っており、誰も見つけることができません。

+0

GETは積極的に要求します。 POSTを使用してみるか、URLに現在のタイムスタンプを追加するなどのキャッシュ・バスト方式を使用してください。 – CBroe

答えて

1

私は、その後に私のKnockoutJSは、Ajax呼び出しを作っていたアクションが含まれているコントローラクラスを飾った次のカスタム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); 
    } 
} 

を作成:IEのキャッシュAJAXの意地の悪い癖を持っている

[NoCache] 
public class APInvoicesSummaryController : APInvoicesBaseController 
{ 
+0

これは適切な解決策です。 – Tomalak

関連する問題