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 相关文章推荐
brook javascript框架介绍
Oct 10 Javascript
JS限制上传图片大小不使用控件在本地实现
Dec 19 Javascript
如何将一个String和多个String值进行比较思路分析
Apr 22 Javascript
javascript模拟枚举的简单实例
Mar 06 Javascript
JavaScript中的console.profile()函数详细介绍
Dec 29 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
Apr 05 Javascript
Javascript中字符串replace方法的第二个参数探究
Dec 05 Javascript
10行原生JS实现文字无缝滚动(超简单)
Jan 02 Javascript
基于Vue和Element-Ui搭建项目的方法
Sep 06 Javascript
js prototype深入理解及应用实例分析
Nov 25 Javascript
vue下canvas裁剪图片实例讲解
Apr 16 Javascript
Vue项目利用axios请求接口下载excel
Nov 17 Vue.js
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编码转换
2012/11/05 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
js 匿名调用实现代码
2009/06/19 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
uniapp实现横向滚动选择日期
2020/10/21 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
python编写暴力破解FTP密码小工具
2014/11/19 Python
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
咨询公司各岗位职责
2013/12/02 职场文书
珠宝店促销方案
2014/03/21 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
贷款委托书怎么写
2014/08/02 职场文书
环保志愿者活动方案
2014/08/14 职场文书
2014年教务处工作总结
2014/12/03 职场文书
财务工作个人总结
2015/02/27 职场文书
表扬信范文
2015/05/04 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
JavaScript文档对象模型DOM
2021/11/20 Javascript