2017-04-05 1 views
0

view에 knockoutjs를 사용하는 asp.net MVC5 앱이 있습니다.IE11 Ajax 요청 전용 Dev 도구 열기

summarypage

버튼 클릭은 다음과 아약스 요청에 바인딩 : 여기

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를 열지 않고도 요청이 이루어지지 않는다는 것을 알 수 있습니다.

어떤 아이디어?

다른 곳에서는이 내용을 자바 스크립트의 console.log 코드로 읽을 수 있지만 검색을 수행 했으므로 아무 것도 찾을 수 없습니다.

[NoCache] 
public class APInvoicesSummaryController : APInvoicesBaseController 
{ 
+0

IE는 캐싱 AJAX의 고약한 버릇이있다 : – CBroe

답변

1

은 내가 다음 작업을 포함하는 컨트롤러 클래스 내 KnockoutJS가 Ajax 호출을 만들고 있었다 장식

[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); 
    } 
} 

다음 사용자 정의 ActionFilterAttribute을 생성 적극적으로 요청하십시오. POST를 사용하거나 URL에 현재 타임 스탬프를 추가하는 등의 캐시 무효화 기술을 사용하십시오.

+0

그게 적절한 해결책입니다. – Tomalak