有人能否对以下现象有所了解?
我有一个在目标平台IE7上运行的ASP.NET MVC应用程序
如果我在数据库中输入记录,则导航到包含HighChart图的ASPX页面,不会显示输入的数据。我必须关闭浏览器并重新加载应用程序以使数据显示在图表中。
我在调试模式下运行应用程序,代码没有命中控制器中的断点。它好像客户端JQUERY代码认为没有变化并且正在缓存。控制器甚至不会启动,但应用程序的运行方式与旧数据一样。
当我重新加载应用程序(停止并启动)时,控制器会激活,我可以调试并且最新的数据进入
疯狂的东西,必须有一个设置可能是web.config或某个地方,以确保客户端JSON调用总是转到控制器而不是缓存
任何评论都非常感谢
Ĵ
如果需要下面的代码:
function CreateChart1(surl) {
// Code block for fetching Array as jsonResult (js)
var url = $("#AbsolutePath").val() + "Incident.mvc/GetChartData_IncidentsBySiteStatus/" + surl;
var chart;
$.getJSON(url, null, function(data) {
var result = [];
jQuery.each(data, function(i, val) {
result[i] = [val.Site, parseInt(val.Count)];
});
chart = new Highcharts.Chart({
chart: {
renderTo: 'chart1',
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false
},
title: {
text: 'Number of Environmental Incidents by Site Status'
},
tooltip: {
formatter: function() {
return '<b>' + this.point.name + '</b>: ' + this.y + ' (' + Math.round(this.percentage) + '%)';
}
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true
},
showInLegend: false
}
},
exporting: {
enabled: true
},
series: [{
type: 'pie',
name: 'Incidents by Site Status',
data: result
}]
});
});
};
控制器代码:
public JsonResult GetChartData_IncidentsBySiteStatus(string SiteTypeId, string searchTextSite, string StartDate, string EndDate)
{
if (searchTextSite == null)
searchTextSite = "";
DateTime startDate = DateTime.Parse(StartDate);
DateTime endDate = DateTime.Parse(EndDate);
IQueryable<Site> sitesQry = _db.Sites;
if (SiteTypeId != "-1")
sitesQry = sitesQry.Where(a => a.SiteTypeId.ToString() == SiteTypeId);
var qry = from i in _db.Incidents
join s in sitesQry on i.SiteId equals s.SiteId
where s.SiteDescription.Contains(searchTextSite)
&& (i.Raised >= startDate && i.Raised <= endDate)
group s by s.SiteStatus.SiteStatusDescription + "[" + s.SiteTypeId.ToString().Replace("1","ON").Replace("0","OFF") + "]"
into grp
select new
{
Site = grp.Key,
Count = grp.Count()
};
return Json(qry.ToList() , JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:2)
问题是IE7还缓存了通过AJAX完成的GET请求。我通常会在查询字符串中添加一个随机数,以便不缓存请求。
你可以这样做: var noCache = new Date().getTime();
//then add nocache as a paremter to the url
var url = $("#AbsolutePath").val() + "Incident.mvc/GetChartData_IncidentsBySiteStatus/" + surl+"&nocache="+noCache;
答案 1 :(得分:0)
jQuery中的AJAX调用的默认设置(脚本和jsonp除外)是允许缓存。您可以使用ajax
方法进行调用,以便指定应禁用缓存:
$.ajax({
cache: false,
url: url,
dataType: 'json',
success: function(data) {
...
}
});