zoukankan      html  css  js  c++  java
  • 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="100%"  class="gvCss">
           <tr class="head"><td style="10%;">姓名</td><td style="30%;">语文</td><td style="30%;">数学</td><td style="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;
            }
        }
    
    }


  • 相关阅读:
    asp.net的decimal保留两位小数
    由于管理员设置的策略,该磁盘处于脱机状态-Win 2008 R2
    论大公司的通病和缺点
    sql server删除数据后空间无变化处理方法
    sql server压缩数据库和日志文件
    SQL千万级数据设计和优化
    SQL Server索引怎么用
    在电脑上测试手机网站
    asp.net实现GZip压缩和GZip解压
    WebService教程和分析
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234138.html
Copyright © 2011-2022 走看看