您的位置:首页 > Web前端 > JQuery

在线访谈:解决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

<%@ 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(),这样在获取数据时,始终都是动态变化的页面,总算是解决了这个缓存不更新的问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐