IE11 Ajax 仅在开发工具打开时发出请求
IE11 Ajax Request Only Made if Dev Tools Open
我有一个 asp.net MVC5 应用程序使用 knockoutjs 作为视图。
下一页的 "Refresh" 按钮有问题:
按钮点击绑定到以下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>
在 Chrome 下一切正常,但在 IE11 中 运行 时,单击按钮无效,除非打开 F12 开发工具 - 然后它工作正常。我可以在提琴手中看到,如果没有打开 Dev Tools,则不会发出任何请求。
有什么想法吗?
我在别处读到这可以归结为 javascript 中的 console.log 代码,但我进行了搜索并找到了 none。
我创建了以下自定义 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);
}
}
然后我装饰了控制器 class,其中包含我的 KnockoutJS 正在对 Ajax 调用的操作:
[NoCache]
public class APInvoicesSummaryController : APInvoicesBaseController
{
我有一个 asp.net MVC5 应用程序使用 knockoutjs 作为视图。
下一页的 "Refresh" 按钮有问题:
按钮点击绑定到以下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>
在 Chrome 下一切正常,但在 IE11 中 运行 时,单击按钮无效,除非打开 F12 开发工具 - 然后它工作正常。我可以在提琴手中看到,如果没有打开 Dev Tools,则不会发出任何请求。
有什么想法吗?
我在别处读到这可以归结为 javascript 中的 console.log 代码,但我进行了搜索并找到了 none。
我创建了以下自定义 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);
}
}
然后我装饰了控制器 class,其中包含我的 KnockoutJS 正在对 Ajax 调用的操作:
[NoCache]
public class APInvoicesSummaryController : APInvoicesBaseController
{