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 相关文章推荐
Javascript常用运算符(Operators)-javascript基础教程
Dec 14 Javascript
XHTML下,JS浮动代码失效的问题
Nov 12 Javascript
js新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
JS 获取浏览器和屏幕宽高等信息代码
Mar 31 Javascript
详细解读JavaScript的跨浏览器事件处理
Aug 12 Javascript
AngularJS使用拦截器实现的loading功能完整实例
May 17 Javascript
layui前段框架日期控件使用方法详解
May 19 Javascript
Angular.js中angular-ui-router的简单实践
Jul 18 Javascript
Javascript刷新页面的实例
Sep 23 Javascript
vue-cli如何引入bootstrap工具的方法
Oct 19 Javascript
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
Jul 27 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
收音机指标测试方法及仪器
2021/03/01 无线电
TMDPHP 模板引擎使用教程
2012/03/13 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
Python之PyUnit单元测试实例
2014/10/11 Python
python九九乘法表的实例
2017/09/26 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
性能服装:HYLETE
2018/08/14 全球购物
医生自荐信
2013/10/11 职场文书
中专毕业生自荐信范文
2013/11/28 职场文书
班组拓展活动方案
2014/08/14 职场文书
春季运动会加油词
2015/07/18 职场文书
2015年教务主任工作总结
2015/07/22 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android