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 相关文章推荐
浏览器无法运行JAVA脚本的解决方法
Jan 09 Javascript
JQuery开发的数独游戏代码
Oct 29 Javascript
JavaScript中自定义事件用法分析
Dec 23 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
Dec 29 Javascript
js密码强度实时检测代码
Mar 02 Javascript
关于JavaScript和jQuery的类型判断详解
Oct 08 Javascript
js Canvas实现的日历时钟案例分享
Dec 25 Javascript
基于Vue制作组织架构树组件
Dec 06 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
Apr 17 Javascript
JS添加或删除HTML dom元素的方法实例分析
Mar 05 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
May 26 Javascript
深入分析jQuery.one() 函数
Jun 03 jQuery
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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
两个强悍的php 图像处理类1
2009/06/15 PHP
探讨php中header的用法详解
2013/06/07 PHP
解析php中memcache的应用
2013/06/18 PHP
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
对Python中画图时候的线类型详解
2019/07/07 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
Python 中如何写注释
2020/08/28 Python
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
打架检讨书2000字
2014/02/22 职场文书
人大调研汇报材料
2014/08/14 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
七一建党节慰问信
2015/02/14 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
高三生物教学反思
2016/02/22 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python