JQuery实现简单的服务器轮询效果实例


Posted in Javascript onMarch 31, 2016

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

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

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

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>服务器轮询</title>
  <link href="Content/jquery-ui-1.7.2.custom.css" rel="stylesheet" type="text/css" />
  <link href="Content/ui.jqgrid.css" rel="stylesheet" type="text/css" />
  <script src="Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
  <script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
  <script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>
  <script src="js/src/grid.base.js" type="text/javascript"></script>
  <script type="text/javascript">
  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("<a href=detailnews.aspx?id=" + id + ">" + title + "</a><br>");
          });
        }
      });
    });
  }
  setInterval('showUnreadNews()',5000);
  </script>
</head>
<body>
  <form id="form1" runat="server">
  <div id="news">
  </div>
  </form>
</body>
</html>

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

<%@ WebHandler Language="C#" Class="Result" %>
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程序设计有所帮助。

Javascript 相关文章推荐
javascript 框架小结 个人工作经验
Jun 13 Javascript
js实现从中间开始往上下展开网页窗口的方法
Mar 02 Javascript
JS实现的竖向折叠菜单代码
Oct 21 Javascript
Bootstrap开关(switch)控件学习笔记分享
May 30 Javascript
jquery获取点击控件的绝对位置简单实例
Oct 13 Javascript
Bootstrap导航条学习使用(二)
Feb 08 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
May 30 Javascript
jQuery 改变P标签文本值方法
Feb 24 jQuery
jQuery - AJAX load() 实例用法详解
Aug 27 jQuery
JS实现简单tab选项卡切换
Oct 25 Javascript
vue实现输入框自动跳转功能
May 20 Javascript
Vue路由切换页面不更新问题解决方案
Jul 10 Javascript
JavaScript实现复制内容到粘贴板代码
Mar 31 #Javascript
JavaScript是如何实现继承的(六种方式)
Mar 31 #Javascript
JS判断元素是否在数组内的实现代码
Mar 30 #Javascript
javascript检查某个元素在数组中的索引值
Mar 30 #Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
Mar 30 #Javascript
谈一谈js中的执行环境及作用域
Mar 30 #Javascript
js实现(全选)多选按钮的方法【附实例】
Mar 30 #Javascript
You might like
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
Javascript的this详解
2019/03/23 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
Python ZipFile模块详解
2013/11/01 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
台湾森森购物网:U-mall
2017/10/16 全球购物
全球在线商店:BerryLook
2019/04/14 全球购物
个人自我剖析材料
2014/02/07 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
计算机专业自荐信
2014/05/24 职场文书
酒店节能减排方案
2014/05/26 职场文书
大学生创业计划书
2014/08/14 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
工商局调档介绍信
2015/10/22 职场文书
Golang jwt身份认证
2022/04/20 Golang