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 相关文章推荐
判断ie的两种简单方法
Aug 12 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
JS访问SWF的函数用法实例
Jul 01 Javascript
常用的Javascript设计模式小结
Dec 09 Javascript
Bootstrap3下拉菜单的实现
Feb 22 Javascript
浅谈Vue-cli 命令行工具分析
Nov 22 Javascript
在vue项目中引入highcharts图表的方法(详解)
Mar 05 Javascript
Vue实现滑动拼图验证码功能
Sep 15 Javascript
解决Vue @submit 提交后不刷新页面问题
Jul 18 Javascript
element中Steps步骤条和Tabs标签页关联的解决
Dec 08 Javascript
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
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
ADODB的数据库封包程序库
2006/12/31 PHP
解析PHP提交后跳转
2013/06/23 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
jQuery操作css样式
2017/05/15 jQuery
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
Python isinstance函数介绍
2015/04/14 Python
详细解读Python中解析XML数据的方法
2015/10/15 Python
Python中pygame安装方法图文详解
2015/11/11 Python
flask-restful使用总结
2018/12/04 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
期终自我鉴定
2014/02/17 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
工程部部长岗位职责
2015/02/12 职场文书
春季运动会加油词
2015/07/18 职场文书
五年级作文之想象作文
2019/10/30 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
Opencv中cv2.floodFill算法的使用
2021/06/18 Python