java ajax轮询_JQuery实现简单的服务器轮询效果实例

本文实例讲述了JQuery实现简单的服务器轮询效果。分享给大家供大家参考,具体如下:

很多论坛都有进入后,弹出提示,说有多少封邮件没有看,或者是一个oa系统,进入后,提示有多少个任务没有做。每隔一段时间会提示一次,但是如何实现呢。其实,利用jquery的话,会比较简单,核心元素就是json格式解析和setInterval()函数。下面一起来实现:

首先,我们default.aspx的页面如下所示:

服务器轮询

function showUnreadNews()

{

$(document).ready(function() {

$.ajax({

type: "GET",

url: "Result.ashx",

dataType: "json",

success: function(msg) {

//alert(msg);

$.each(msg, function(id, title) {

$("#news").append("" + title + "
");

});

}

});

});

}

setInterval('showUnreadNews()',5000);

上面代码主要利用ajax函数向Result.ashx页面发出ajax请求,然后由Result.ashx这个页面返回json数据,并进行解析,最后利用setInterval()函数实现轮询效果,具体的Result.ashx页面代码如下:

using System;

using System.Web;

using System.Text;

using System.Data.SQLite;

using System.Data;

public class Result : IHttpHandler {

public void ProcessRequest (HttpContext context) {

string sql = "select * from Content where NewsFlag=0";

DataTable dt = new DataTable();

using (SQLiteConnection conn = new SQLiteConnection(InitSQLite().Connection))

{

SQLiteDataAdapter sda = new SQLiteDataAdapter(sql, conn);

sda.Fill(dt);

}

string jsonStr = GetJson(dt);

context.Response.ContentType = "text/json";

context.Response.Buffer = true;

context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);

context.Response.AddHeader("pragma", "no-cache");

context.Response.AddHeader("cache-control", "");

context.Response.CacheControl = "no-cache";

context.Response.Write(jsonStr);

}

public static string GetJson(DataTable dt)

{

StringBuilder jsonBuilder = new StringBuilder();

jsonBuilder.Append("{");

for (int i = 0; i < dt.Rows.Count; i++)

{

jsonBuilder.Append( dt.Rows[i]["NewsID"].ToString() + ":" +"\""+ dt.Rows[i]["NewsTitle"].ToString()+"\",");

}

jsonBuilder.Remove(jsonBuilder.Length - 1, 1);

jsonBuilder.Append("}");

return jsonBuilder.ToString();

}

public Sqlite InitSQLite()

{

Sqlite _sqLite = new Sqlite();

_sqLite.ConnetStringBuilder.DataSource = AppDomain.CurrentDomain.BaseDirectory + "News.db3";

_sqLite.ConnetStringBuilder.Pooling = true;

_sqLite.ConnetStringBuilder.FailIfMissing = true;

_sqLite.ConnetStringBuilder.UseUTF16Encoding = true;

return _sqLite;

}

public bool IsReusable {

get {

return false;

}

}

}

数据库使用的是sqlite,具体使用方式请自查。这个处理文件中,最重要的是由datatable数据生成符合格式的json数据。

这样,系统最终就实现了,每隔5S钟,首页会向服务器轮询一次数据,以便获得最新的数据。

希望本文所述对大家jQuery程序设计有所帮助。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值