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解决innerText浏览器兼容问题思路代码
May 17 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
Sep 22 Javascript
jquery改变tr背景色的示例代码
Dec 28 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 Javascript
浅谈javascript中的instanceof和typeof
Feb 27 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
Bootstrap模仿起筷首页效果
May 09 Javascript
Angularjs 动态添加指令并绑定事件的方法
Apr 13 Javascript
js实现控制文件拖拽并获取拖拽内容功能
Feb 17 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
Sep 20 Javascript
js实现右键弹出自定义菜单
Sep 08 Javascript
react的hooks的用法详解
Oct 12 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
Windows下安装Memcached的步骤说明
2010/04/25 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
JavaScript基本对象
2007/01/11 Javascript
js 单引号 传递方法
2009/06/22 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
Vue下的国际化处理方法
2017/12/18 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
jQuery滑动效果实现方法分析
2018/09/05 jQuery
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
分析python服务器拒绝服务攻击代码
2014/01/16 Python
python的re模块应用实例
2014/09/26 Python
Python json模块使用实例
2015/04/11 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
解决python 输出是省略号的问题
2018/04/19 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
安全资料员岗位职责
2013/12/14 职场文书
小学生新年寄语
2014/04/03 职场文书
挂职学习心得体会
2014/09/09 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
mysql数据库如何转移到oracle
2022/12/24 MySQL