jQuery+Ajax实现限制查询间隔的方法


Posted in Javascript onJune 07, 2016

本文实例讲述了jQuery+Ajax实现限制查询间隔的方法。分享给大家供大家参考,具体如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Jquery20150305.aspx.cs" Inherits="Jquery20150305" %>
<!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>Jquery异步查询加载效果</title>
  <script src="JS/jquery-1.9.1.js" type="text/javascript"></script>
  <link href="Styles/Site.css" rel="stylesheet" type="text/css" />
  <style type="text/css">
  .span_query { cursor:pointer;}
  </style>
  <script type="text/javascript">
    $(function () {
      $(".span_query").click(function () {
        var val = $(this).attr("data-value");
        var id = $(this).attr("id");
        AjaxQuery($(this),val);
      });
    });
    function AjaxQuery(obj, v) {
      $.ajax({
        url: 'Ajax/Handler.ashx?queryType=score&queryValue=' + v,
        type: 'POST',
        dataType: 'text',
        timeout: 10000,
        cache: false,
        beforeSend: LoadFunction,
        error: erryFunction,
        success: succFunction
      })
      function LoadFunction() {
        obj.html('<img src="Images/loading02.gif" />');
      }
      function erryFunction() {
        obj.html('error');
      }
      function succFunction(tt) {
        obj.html('');
        obj.html(tt);
      }
    }
  </script>
</head>
<body>
  <form id="form1" runat="server">
  <div>
  <table style="width:100%" class="gvCss">
    <tr class="head"><td style="width:10%;">姓名</td><td style="width:30%;">语文</td><td style="width:30%;">数学</td><td style="width:30%;">英语</td></tr>
    <tr><td>张三</td>
      <td id="query1" title="点击查询" class="span_query" data-value="1">查询</td>
      <td id="query2" title="点击查询" class="span_query" data-value="2">查询</td>
      <td id="query3" title="点击查询" class="span_query" data-value="3">查询</td></tr>
  </table>
  </div>
  </form>
</body>
</html>
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Web.SessionState;
//Handler.ashx
public class Handler : IHttpHandler, IRequiresSessionState
{
  public void ProcessRequest(HttpContext context)
  {
    context.Response.ContentType = "text/plain";
    string queryType = context.Request["queryType"];
    string queryValue = context.Request["queryValue"];
    if (context.Session["preQuery"] == null) //第一次查询
    {
      context.Session["preQuery"] = queryValue + "@" + DateTime.Now.AddDays(-1);
      context.Session["currQuery"] = queryValue + "@" + DateTime.Now;
    }
    else //存在上次查询
    {
      string[] preStrs = context.Session["currQuery"].ToString().Split('@');
      context.Session["preQuery"] = queryValue + "@" + preStrs[1]; //重置为当前查询参数+上次查询时间
      context.Session["currQuery"] = queryValue + "@" + DateTime.Now;
    }
    string[] strs=context.Session["preQuery"].ToString().Split('@');
    if (strs[0] == queryValue) //同一请求限制查询间隔
    {
      DateTime preTime = Convert.ToDateTime(strs[1]);
      DateTime nowTime = DateTime.Now;
      bool flag = CheckQueryTimeSpan(preTime, nowTime, 3);
      if (flag)
      {
        context.Response.Write("查询间隔3秒");
      }
      else
      {
        context.Response.Write("98");
      }
    }
    context.Response.End();
  }
  /// <summary>
  /// 判断本次查询和上次查询间隔是否小于指定秒数
  /// </summary>
  /// <param name="preTime">上次查询时间</param>
  /// <param name="nowTime">本次查询时间</param>
  /// <param name="timeSpan">指定秒数</param>
  /// <returns></returns>
  public bool CheckQueryTimeSpan(DateTime preTime, DateTime nowTime, int timeSpan)
  {
    TimeSpan ts = nowTime - preTime;
    int difference = ts.Seconds;
    bool flag = (difference < timeSpan) ? true : false;
    return flag;
  }
  public bool IsReusable {
    get {
      return false;
    }
  }
}

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
脚本之家贴图转换+转贴工具用到的js代码超级推荐
Apr 05 Javascript
基于jquery的时间段实现代码
Aug 02 Javascript
原生js实现跨浏览器获取鼠标按键的值
Apr 08 Javascript
浅析JS中document对象的一些重要属性
Mar 06 Javascript
Javascript中arguments用法实例分析
Jun 13 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
Jun 08 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
Jun 23 Javascript
js事件驱动机制 浏览器兼容处理方法
Jul 23 Javascript
jQuery Chosen通用初始化
Mar 07 Javascript
基于BootStrap的前端分页带省略号和上下页效果
May 18 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
Apr 16 jQuery
js模拟F11页面全屏显示
Sep 17 Javascript
JavaScript实现九九乘法表的简单实例
Jun 07 #Javascript
javascript如何定义对象数组
Jun 07 #Javascript
jQuery控制div实现随滚动条滚动效果
Jun 07 #Javascript
bootstrap输入框组代码分享
Jun 07 #Javascript
javascript 数组的定义和数组的长度
Jun 07 #Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
Jun 07 #Javascript
原生js三级联动的简单实现代码
Jun 07 #Javascript
You might like
php 无限级缓存的类的扩展
2009/03/16 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
PHP工厂模式的日常使用
2019/03/20 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
CCPry JS类库 代码
2009/10/30 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
python数据结构之二叉树的建立实例
2014/04/29 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
python中关于数据类型的学习笔记
2020/07/19 Python
医药专业应届毕业生求职信范文
2014/01/01 职场文书
六年级数学教学反思
2014/02/03 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
低碳环保演讲稿
2014/08/28 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
师德师风学习材料
2014/12/19 职场文书
食品安全责任书范本
2015/05/09 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书