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 相关文章推荐
复制本贴标题和地址的js代码
Jul 01 Javascript
jQuery AJAX回调函数this指向问题
Feb 08 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
Nov 17 Javascript
jQuery的ajax和遍历数组json实例代码
Aug 01 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
Nov 16 Javascript
bootstrap组件之导航组件使用方法
Jan 19 Javascript
jquery单击文字或图片内容放大并居中显示
Jun 23 jQuery
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
JS调用安卓手机摄像头扫描二维码
Oct 16 Javascript
详解Vue中组件的缓存
Apr 20 Javascript
jquery.pager.js实现分页效果
Jul 29 jQuery
js实现超级玛丽小游戏
Mar 18 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检测iis环境是否支持htaccess的方法
2014/02/18 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
在python3.64中安装pyinstaller库的方法步骤
2020/06/02 Python
linux面试题参考答案(7)
2012/10/29 面试题
国际商务专业学生个人的自我评价
2013/09/28 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
学校开除通知书
2015/04/25 职场文书
校友会致辞
2015/07/30 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
httpclient调用远程接口的方法
2022/08/14 Java/Android