在线访谈:解决jQuery异步获取数据,客户端始终不更新的问题

一、网页

    <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(),这样在获取数据时,始终都是动态变化的页面,总算是解决了这个缓存不更新的问题


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tiz198183

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值