2011-07-28 13 views
1

誰かが次のような現象を見せてくれますか?ブラウザJQUERYデータキャッシュIE7

私はデータベースにレコードを入力すると、入力したデータが表現されていないグラフその後、HighChartが含まれているASPXページに移動し、ターゲットプラットフォームIE7

上で実行されているASP.NET MVCアプリケーションを持っています。私はブラウザを閉じて、データをチャートに表示させるためにアプリケーションをリロードする必要があります。

私はアプリケーションをデバッグモードで実行し、コードはコントローラ内のブレークポイントにヒットしません。クライアントのJQUERYコードが変更がないと判断し、キャッシュしているかのようにします。コントローラーは起動しませんが、古いデータを処理するようなアプリが実行されます。

私は、コントローラの火災(停止および起動)アプリケーションをリロードすると私はデバッグすることができますし、最新のデータが

クレイジーなものになると、そこにweb.configファイルのために、おそらく設定でなければならないか、どこかにあることを保証するために、

:クライアントJSONは常にコントローラを後藤以下、必要に応じて任意のコメントは非常に

J

CODEを高く評価し

をキャッシュしない呼び出します

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

http://stackoverflow.com/questions/264216/getjson-returning-cached-data-in-ie8これは参考になるかもしれません – Rafay

答えて

2

問題は、IE7はAJAXを介して行わGETのrewuestもキャッシュすることです。私は通常、リクエスト文字がキャッシュされないように、クエリ文字列に乱数を追加します。

あなたができる

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; 
0

AJAXのデフォルト設定では、(スクリプトとJSONPを除く)のjQueryで呼び出してキャッシュを可能にすることです。無効にする必要があるあなたがそのキャッシュを指定できるように電話をかけるためにajaxメソッドを使用することができます。

$.ajax({ 
    cache: false, 
    url: url, 
    dataType: 'json', 
    success: function(data) { 
    ... 
    } 
});