在母版頁以 AJAX 動態載入新聞分類選單,體驗「資料與介面分離、JSON 傳輸、後台快取」三大優勢。
資料表 NewsType:TypeId(int), TypeName(string)

$.ajax():發送非同步請求$.parseJSON():解析 JSON 字串$.each():遍歷陣列/物件產生 JSON 格式:[{"TypeId":1,"TypeName":"科技"},{"TypeId":2,"TypeName":"財經"}]


$(function() {
$.ajax({
url: "Admin/News/Data/GetNewsInfo.ashx?method=GetNewsTypeForCombox",
type: "get",
success: function(text) {
var data = $.parseJSON(text);
$("#m2").empty(); // 清空舊選項
$.each(data, function(key, val) {
$("#m2").append('<a href="NewsList.aspx?TypeId=' + val.TypeId + '">' + val.TypeName + '</a>');
});
}
});
});

母版頁每次載入都會觸發 AJAX,分類資料極少變動,加入快取大幅降低 DB 壓力:
// GetNewsInfo.ashx 內
public string GetNewsTypeForCombox()
{
string cacheKey = "NewsTypeList";
if (HttpRuntime.Cache[cacheKey] != null)
return (string)HttpRuntime.Cache[cacheKey];
string json = BuildJsonFromDb(); // 查詢 DB 組 JSON
HttpRuntime.Cache.Insert(cacheKey, json, null,
DateTime.Now.AddHours(1), Cache.NoSlidingExpiration);
return json;
}

