在线访谈:解决jQuery异步获取数据,客户端始终不更新的问题
2011-10-17 12:02
666 查看
一、网页
<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
三、Dt2Json方法
因为开发的系统是完全基于jQuery开发的,所以页面也是html页面,起初感觉还很正常,但是测试的发现虽然数据是动态获取了,但是在页面上就是不更新,原来是因为缓存的问题。在同事的提醒下,在jQuery的ajax方法调用的时候传递一个动态改变的参数,比如:nowTime:new Date().getTime(),这样在获取数据时,始终都是动态变化的页面,总算是解决了这个缓存不更新的问题
<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(),这样在获取数据时,始终都是动态变化的页面,总算是解决了这个缓存不更新的问题
相关文章推荐
- 解决jQuery异步获取数据,前端始终不更新的问题
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- jquery用jsonp方式跨域获取json数据原理(解决jquery跨服务器权限受限问题)
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- 【jQuery】解决在循环中使用ajax异步时,数据的同步问题
- fusionCharts dataStreamURL获取服务端数据更新问题解决
- 关于解决JQuery发送Ajax请求后,IE缓存数据不更新的问题
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- 关于web页面缓存问题解决方法,如图片缓存,异步提交数据页面不更新
- angular2 获取到的数据无法实时更新问题的解决
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- 解决angular2 获取到的数据无法实时更新的问题
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- jquery异步ajax超大长度base64图片长字段数据传输问题解决办法和php后台处理办法
- jQuery在异步请求数据返回后,调用$("selector").html(data.content);之后因为一些特殊字符或者',"不能显示内容的问题解决办法
- 关于解决JQuery发送Ajax请求后,IE缓存数据不更新的问题
- 关于CListCtrl控件更新Item的闪烁问题和一次插入大容量数据的显示问题解决办法
- 解决客户端从服务器请求数据乱码问题