加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ajax登录

发布时间:2020-12-15 21:41:26 所属栏目:百科 来源:网络整理
导读:使用jQuery.Ajax()实现登录功能 logintest.html–主界面 !DOCTYPE html html xmlns = "http://www.w3.org/1999/xhtml" head meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" / title 用户登录 / title script src = "jquery.min.j

使用jQuery.Ajax()实现登录功能

logintest.html–主界面

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>用户登录</title>
    <script src="jquery.min.js"></script>
    <script type="text/javascript"> $(function () { $("#imgvalidcode").click(function () { $("#imgvalidcode").attr("src","LoginValidCode.ashx?" + new Date());//增加当前时间,避免get方式请求的缓存,导致图片不刷新问题 });//图片点击函数 $("#btnlogin").click(function () { //使用Ajax发送请求 $.ajax({ type: 'post',url: 'LoginTest.ashx',data: { username: $("#username").val(),password: $("#password").val(),validcode: $("#validcode").val() },//传递请求报文 success:function(data){ //1.success只是通讯成功 //2.接下来是进行详细的验证 if (data.Status=="ok") { alert(data.Msg); } else if (data.Status=="error") { alert("出错了," + data.Msg); } else { alert("服务器返回错误信息"); } },error: function () { alert("登录失败!"); } }); });//提交按钮函数 });//页面加载函数 </script>
</head>
<body>
    <table>
        <tr><td>用户名:</td><td><input type="text" id="username"/></td></tr>
        <tr><td>密码:</td><td><input type="password" id="password"/></td></tr>
        <tr><td><img src="LoginValidCode.ashx" id="imgvalidcode" /></td><td><input type="text" id="validcode" /></td></tr>
        <tr><td><input type="button" id="btnlogin" value="登录" /></td></tr>
    </table>
</body>
</html>

LoginValidCode.ashx–生成验证码的类

<%@ WebHandler Language="C#" Class="LoginValidCode" %>

using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.Web.SessionState;

public class LoginValidCode : IHttpHandler,IRequiresSessionState//5.一般处理程序调用session需要这个接口,否则出错
{
    //4.设定一个常量
    public const string LOGINVALIDCODE = "loginvalidcode";
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "image/jpeg";//1.修改返回的报文类型是图片的格式
       //2.产生四位数的随机数
        Random rand = new Random();
        int i = rand.Next(1000,9999);
        //4.将生成的验证码存入到session变量中
        context.Session[LOGINVALIDCODE] = i.ToString();
        //3.绘制出四位数的验证码
        using(Bitmap bmp=new Bitmap(80,28))
        {
            using(Graphics g=Graphics.FromImage(bmp))
            using(Font font=new Font(FontFamily.GenericSansSerif,20))
            {
                g.DrawString(i.ToString(),font,Brushes.Red,new PointF(0,0));
            }
            bmp.Save(context.Response.OutputStream,ImageFormat.Jpeg);//保存图片到输出流中
        }
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

LoginTest.ashx–登录一般处理程序

<%@ WebHandler Language="C#" Class="LoginTest" %>

using System;
using System.Web;
using System.Web.SessionState;
using System.Web.Script.Serialization;
using System.Data;
using Web1;

public class LoginTest : IHttpHandler,IRequiresSessionState//1。实现接口
{

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "application/json";//转为json格式,采用第三种方式传递json
        string username = context.Request["username"];
        string password=context.Request["password"];
        string validcode=context.Request["validcode"];


        string serverValidCode = (string)context.Session[LoginValidCode.LOGINVALIDCODE];
        if (validcode!=serverValidCode)
        {
            string json = new JavaScriptSerializer().Serialize(new { Status = "error",Msg = "验证码错误" });
            context.Response.Write(json);
            return;
        }
        DataTable dUsers = SqlHelper.ExecuteQuery("select * from T_users where UserName=@UserName",new System.Data.SqlClient.SqlParameter("@UserName",username));
        if (dUsers.Rows.Count<=0)
        {
            string json = new JavaScriptSerializer().Serialize(new { Status = "error",Msg = "用户名不存在" });
            context.Response.Write(json);
            return;

        }
        if (dUsers.Rows.Count>1)
        {
            string json = new JavaScriptSerializer().Serialize(new { Status = "error",Msg = "用户名已经存在" });
            context.Response.Write(json);
            return;
        }
        DataRow rowUser=dUsers.Rows[0];
        string dbPassword=(string)rowUser["password"];
        if (dbPassword == password)
        {
            string json = new JavaScriptSerializer().Serialize(new { Status = "ok",Msg = "登录成功" });
            context.Response.Write(json);
        }
        else {
            string json = new JavaScriptSerializer().Serialize(new { Status = "error",Msg = "密码错误" });
            context.Response.Write(json);

        }
       // context.Response.Write(this.GetType().Assembly.Location);//显示当前程序集的位置
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

出现的问题:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读