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编程起步(第二课)
Feb 27 Javascript
新浪刚打开页面出来的全屏广告代码
Apr 02 Javascript
用js实现的检测浏览器和系统的函数
Apr 09 Javascript
原生js实现跨浏览器获取鼠标按键的值
Apr 08 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
Nov 18 Javascript
express文件上传中间件Multer详解
Oct 24 Javascript
JS中cookie的使用及缺点讲解
May 13 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
Jan 16 Javascript
JS非行间样式获取函数的实例代码
Jun 05 Javascript
使用RN Animated做一个“添加购物车”动画的方法
Sep 12 Javascript
vue分页插件的使用方法
Dec 25 Javascript
JavaScript实现简单进度条效果
Mar 25 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框架的性能
2008/01/10 PHP
php-app开发接口加密详解
2018/04/18 PHP
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
js实现导航跟随效果
2018/11/17 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python3.5 tkinter实现页面跳转
2018/01/30 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
python 连续不等式语法糖实例
2020/04/15 Python
Django REST 异常处理详解
2020/07/15 Python
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
房地产融资计划书
2014/01/10 职场文书
小学生暑假感言
2014/02/06 职场文书
安全检查汇报材料
2014/12/26 职场文书
检讨书范文500字
2015/01/28 职场文书
管辖权异议上诉状
2015/05/23 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers
宝塔更新Python及Flask项目的部署
2022/04/11 Python