zoukankan      html  css  js  c++  java
  • dev Session和计时器 完成 弹窗无刷新

    js代码

    var pcLogin;
    var tbLogin;

    var timer; //声明一个定时器变量


    //window.onload = function () {
    // pcLogin = ASPxClientPopupControl.Cast('pcLogin');
    // tbLogin = ASPxClientButton.Cast('tbLogin');
    //}

    function pcLogin_Init(s, e) {
    ShowLoginWindow();
    }

    var sesstionTime; //什么一个变量去接收这个值
    function Setimeout(time) { //这个方法可以拿到Web.config 从的Session 过期值
    sesstionTime = time;
    }


    //隐藏弹窗
    function CloceLoginWindow() {
    pcLogin.Hide();
    }

    function ShowLoginWindow() {debugger
    clearInterval(timer);//初始化定时器时间
    var dateTime = sesstionTime;//Session过期时间赋值给dateTime;
    timer = setInterval(function () { //定时器时间设定
    pcLogin.Show();
    }, dateTime * 60000); //设置时间 dateTime 1秒 = 1000毫秒 这是 定时器的 计算单位 为毫秒 600000

    }

    //登录按钮
    function Start() {
    debugger
    var tbLogin = tbLogins.GetText(); //获取Textbox值
    var tbPassword = tbPasswords.GetText();

    $.ajax({
    url: '/ajax/Gps.ashx?action=LoginVerification',
    data: { tbLogin: tbLogin, tbPassword: tbPassword },
    type: 'post',
    dataType: 'json',
    success: function (r) {
    if (r.info == "ok") {
    CloceLoginWindow();
    //window.location.reload(); 强制刷新页面的实现代码
    } else {
    alert("用户名或密码不正确 .");
    pcLogin.Show();
    }
    }
    });
    }

     后端代码  如果你的后端代码是写在 IHttpHandler 里面的化 请引用 using System.Web.SessionState;

    不然 SessionHelper.InsertSessionUser(user);获取不到Session的值

    private void LoginVerification(HttpContext context)
    {
    PlatformUser user = null;
    var tbLogin = context.Request.Form["tbLogin"];
    var tbPassword = context.Request.Form["tbPassword"];

    string encyptPass = DESEncrypt.Encrypt(tbPassword, GpsSetting.EncryptKey);
    AccountDAL account = new AccountDAL();

    user = account.GetValidUser(tbLogin, encyptPass);
    string state = string.Empty;
    if (user != null)
    {
    SessionHelper.InsertSessionUser(user);
    state = "ok";
    }

    JsonResult jr = new JsonResult
    {
    info = state,
    //data = dt
    };


    IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
    timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";

    context.Response.Write(JsonConvert.SerializeObject(jr, timeFormat));
    context.Response.End();
    }

    还有前端代码

    <script>
    Setimeout(<%=Session.Timeout%>) 这句代码是获取 Web.config 里面 Session 设置的 到期值 这样js可以成功拿到 

    </script>

    <%-- 登录页面 --%>
    <dx:ASPxPopupControl ID="pcLogin" runat="server" ClientInstanceName="pcLogin"
    CloseAction="None" Width="300px" Height="200px" ShowCloseButton="False" CloseOnEscape="True" Modal="True"
    PopupHorizontalAlign="WindowCenter" PopupVerticalAlign="WindowCenter"
    HeaderText="登录" AllowDragging="True" PopupAnimationType="None" PopupAction="None">
    <%-- <ClientSideEvents PopUp="function(s,e) { ASPxClientEdit.ClearGroup('entryGroup'); tbLogin.Focus(); }" />--%>
    <ClientSideEvents Init="pcLogin_Init" />

    <ContentCollection>
    <dx:PopupControlContentControl runat="server">
    <dx:ASPxFormLayout ID="ASPxFormLayout1" runat="server" ColCount="2" AlignItemCaptionsInAllGroups="True" Width="100%">
    <Items>
    <dx:LayoutItem ColSpan="2" Caption="用户名">
    <LayoutItemNestedControlCollection>
    <dx:LayoutItemNestedControlContainer runat="server">
    <dx:ASPxTextBox ID="tbLogin" runat="server" TextField="tbLoginName" Width="100%" ClientInstanceName="tbLogins">
    <ValidationSettings EnableCustomValidation="True" ValidationGroup="entryGroup" SetFocusOnError="True"
    ErrorDisplayMode="Text" ErrorTextPosition="Bottom" CausesValidation="True">
    <RequiredField ErrorText="用户名必填." IsRequired="True" />
    <RegularExpression ErrorText="Login required" />
    <ErrorFrameStyle Font-Size="10px">
    <ErrorTextPaddings PaddingLeft="0px" />
    </ErrorFrameStyle>
    </ValidationSettings>
    </dx:ASPxTextBox>
    </dx:LayoutItemNestedControlContainer>
    </LayoutItemNestedControlCollection>
    </dx:LayoutItem>
    <dx:LayoutItem ColSpan="2" Caption="密码">
    <LayoutItemNestedControlCollection>
    <dx:LayoutItemNestedControlContainer runat="server">
    <dx:ASPxTextBox ID="tbPassword" runat="server" Width="100%" ClientInstanceName="tbPasswords" Password="True">
    <ValidationSettings EnableCustomValidation="True" ValidationGroup="entryGroup" SetFocusOnError="True"
    ErrorDisplayMode="Text" ErrorTextPosition="Bottom">
    <RequiredField ErrorText="密码必填." IsRequired="True" />
    <ErrorFrameStyle Font-Size="10px">
    <ErrorTextPaddings PaddingLeft="0px" />
    </ErrorFrameStyle>
    </ValidationSettings>
    </dx:ASPxTextBox>
    </dx:LayoutItemNestedControlContainer>
    </LayoutItemNestedControlCollection>
    </dx:LayoutItem>
    <dx:LayoutItem HorizontalAlign="Right" ShowCaption="False">
    <LayoutItemNestedControlCollection>
    <dx:LayoutItemNestedControlContainer runat="server">
    <%--<dx:ASPxButton ID="btOK" ClientSideEvents-Click="" runat="server" Text="登录" Width="80px" AutoPostBack="False" Style="float: left; margin-left: 70px" OnClick="btOK_Click">
    <%-- <ClientSideEvents Click="function(s, e) { if(ASPxClientEdit.ValidateGroup('entryGroup')) pcLogin.Hide(); }" />--%>
    <%-- </dx:ASPxButton>--%>
    <dx:ASPxButton ID="btnSearch" ClientInstanceName="btnSearch" Width="80px" runat="server" Text="登录" AutoPostBack="false">
    <ClientSideEvents Click="function(){
    Start();
    }" />
    </dx:ASPxButton>


    </dx:LayoutItemNestedControlContainer>
    </LayoutItemNestedControlCollection>
    </dx:LayoutItem>
    <dx:LayoutItem HorizontalAlign="Right" ShowCaption="False">
    <LayoutItemNestedControlCollection>
    <dx:LayoutItemNestedControlContainer runat="server">
    <dx:ASPxButton ID="btCancel" runat="server" Text="取消" Width="80px" AutoPostBack="False" Style="float: left; margin-left: 8px" OnClick="btCancel_Click">
    <%-- <ClientSideEvents Click="function(s, e) { pcLogin.Hide(); }" />--%>
    </dx:ASPxButton>
    </dx:LayoutItemNestedControlContainer>
    </LayoutItemNestedControlCollection>
    </dx:LayoutItem>
    </Items>
    </dx:ASPxFormLayout>
    </dx:PopupControlContentControl>
    </ContentCollection>
    <ContentStyle>
    <Paddings PaddingBottom="5px" />
    </ContentStyle>
    </dx:ASPxPopupControl>

     Web.config

     <sessionState mode="InProc"   timeout="60"/>

    SessionHelper

    using GpsWeb.Model;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    namespace GpsWeb.Helper
    {
    public class SessionHelper
    {
    public static void InsertSessionUser(PlatformUser user)
    {
    HttpContext ctx = HttpContext.Current;
    ctx.Session[GpsSetting.SessionKey] = user;
    }


    public static PlatformUser GetSessionUser()
    {
    HttpContext ctx = HttpContext.Current;
    var obj = ctx.Session[GpsSetting.SessionKey];
    if (obj == null) return null;
    return (PlatformUser)ctx.Session[GpsSetting.SessionKey];
    }


    }
    }

  • 相关阅读:
    ECharts中悬浮图标tooltie多行显示已解决
    Linux中的$符号的三种常见用法
    Shell逐行读取文件的4种方法
    rename
    nodejs安装
    “ArcGIS Desktop遇到严重的应用程序错误,无法继续”的解决方案
    跟我一起学Redis之Redis持久化必知必会
    微服务很香--麻辣味,但要慢慢消化
    跟我一起学Redis之Redis事务简单了解一下
    跟我一起学.NetCore之EF Core 实战入门,一看就会
  • 原文地址:https://www.cnblogs.com/linnew/p/11759206.html
Copyright © 2011-2022 走看看