一、网页
<script type="text/javascript" language="javascript">
function getnums() {
var Ccid=$("#HiddenField1").val();
$.get("GetDataByJquery/GetList.ashx",{LbId: Ccid,nowTime:new Date().getTime()},function(msg){
var dataObj = eval("(" + msg + ")");
$("#right_body").empty();
$(dataObj["JsonStr"]).each(function(idx, item) {
var li = $("<li></li>").html("<span>"+item.codecn+":</span>"+item.Title+"<p>");
$("#right_body").append(li);
});
});
//alert("123");
}
$(document).ready(function(){
if($("#HiddenField1").val()=="")
{
location.href="index.aspx";
//alert("访谈ID有问题!");
return false;
}
else
{
setInterval(getnums, 2000);
}
});
</script>
二、GetList.ashx
<%@ WebHandler Language="C#" Class="GetList" %>
using System;
using System.Web;
using System.Data;
public class GetList : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
int LbId = int.Parse(context.Request.Params["LbId"].ToString());
DataSet ds = new DataSet();
string returnJson = "";
ds = BtBLL.GetList(LbId);
returnJson = CommFun.Dt2Json(ds.Tables[0], "JsonStr");
context.Response.Write(returnJson);
}
public bool IsReusable {
get {
return false;
}
}
}
三、Dt2Json方法
public static string Dt2Json(DataTable dt, string json)
{
StringBuilder sb = new System.Text.StringBuilder();
StringWriter sw = new StringWriter(sb);
using (JsonWriter jw = new JsonWriter(sw))
{
JsonSerializer ser = new JsonSerializer();
jw.WriteStartObject();
jw.WritePropertyName(json);
jw.WriteStartArray();
foreach (DataRow dr in dt.Rows)
{
jw.WriteStartObject();
foreach (DataColumn dc in dt.Columns)
{
jw.WritePropertyName(dc.ColumnName);
ser.Serialize(jw, dr[dc].ToString());
}
jw.WriteEndObject();
}
jw.WriteEndArray();
jw.WriteEndObject();
sw.Close();
jw.Close();
}
return sb.ToString();
}
因为开发的系统是完全基于jQuery开发的,所以页面也是html页面,起初感觉还很正常,但是测试的发现虽然数据是动态获取了,但是在页面上就是不更新,原来是因为缓存的问题。在同事的提醒下,在jQuery的ajax方法调用的时候传递一个动态改变的参数,比如:nowTime:new Date().getTime(),这样在获取数据时,始终都是动态变化的页面,总算是解决了这个缓存不更新的问题