AJax登录。。转
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
试想如果在注册时,提交了注册信息,等了几秒后页面重载了,结果弹出一个提示框告诉你“用户名已被使用”,那将是很令人恼火的一件事。所以在这里,使用AJAX实现异步请求,即可在不重载页面的情况下实现与数据库的通讯。
创建XMLHTTPRequest对象
使用javascript在html页面中创建XMLHTTPRequest对象,实现AJAX异步请求:
- <span style="font-size:14px;"> var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
- xmlhttp.open("POST", "AJAXTest.ashx?" + "i=5&j=10", true);
- xmlhttp.onreadystatechange = function ()
- {
- if (xmlhttp.readyState == 4)
- {
- if (xmlhttp.status == 200)
- {
- alert(xmlhttp.responseText);
- }
- else
- {
- alert("AJAX服务器返回错误!");
- }
- }
- }
- xmlhttp.send();
- </span>
var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //创建XMLHTTP对象,考虑兼容性
xmlhttp.open("POST", "AJAXTest.ashx?" + "i=5&j=10", true); //“准备”向服务器的GetDate1.ashx发出Post请求(GET可能会有缓存问题)。这里还没有发出请求。
readyState == 4 表示服务器返回完成数据了。之前可能会经历2(请求已发送,正在处理中)、3(响应中已有部分数据可用了,但是服务器还没有完成响应的生成)
注意: 不要以为if (xmlhttp.readyState == 4) 在send之前执行就觉得不对, xmlhttp.send(); 这时才开始发送请求。这时才开始发送请求后不等服务器返回数据,就继续向下执行,所以不会阻塞,界面就不卡了,这就是AJAX中“A”的含义“异步”。
AJAX的封装
在实际项目开发中,会有多处用到AJAX异步请求,可是创建对象代码这么长,复制粘贴都嫌麻烦,而且还会影响代码的观赏性,所以需要将AJAX进行封装。将其封装成js功能文件,并在网页中导入即可进行引用。
简单AJAX封装后代码:
- <span style="font-family:Times New Roman;font-size:14px;"> function ajax(url,onsuccess,onfail)
- {
- var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
- xmlhttp.open("POST", url, true);
- xmlhttp.onreadystatechange = function ()
- {
- if (xmlhttp.readyState == 4)
- {
- if (xmlhttp.status == 200)
- {
- onsuccess(xmlhttp.responseText);//成功时逻辑操作
- }
- else
- {
- onfail(xmlhttp.status);//失败是逻辑操作
- }
- }
- }
- xmlhttp.send(); //这时才开始发送请求
- }</span>
封装完成后,我们可以开始写登陆判断代码(我是用的是.net):
首先,创建一个html页login.htm以及ashx一般处理程序userhandle.ashx,请求的url中带上一个action参数,在一般处理程序中对请求进行处理。
- function Submit1_onclick() {
- var name = document.getElementById("name").value;
- var psw = document.getElementById("psw").value;
- if (psw != "" && name != "") {
- //调用AJAX
- ajax("../userhandle.ashx?operate=login&userName=" + name + "&psw=" + psw, function (resText) {
- if (resText == "fail") {
- alert("用户名或密码错误!");
- return false;
- }
- else {
- document.write(resText);
- }
- })
- }
- else {
- alert("请输入完整登陆信息!");
- return false;
- }
- }
在一般处理程序中接到请求动作,判断并执行相关查询,返回一个字符串,前台页面接到后,判断并执行相应功能。
- public void login(HttpContext context)
- {
- userBLL ub = new userBLL();
- string userName = context.Request["userName"];
- string userPsw = context.Request["psw"];
- bool b = ub.Login(userName, userPsw);//封装好的bll层方法,判断用户名密码是否正确
- if (b == true)
- {
- context.Session["Name"] = userName;
- context.Session["role"] = "user";
- context.Response.Write("success");
- }
- else
- {
- context.Response.Write("fail");
- }
- }
服务器判断完后,将success或者fail发送到客户端。这样一个使用AJAX异步请求实现登陆就完成了。
至于注册是判断用户名,我就只粘贴上来:
- function check() {
- var userName = document.getElementById("Text1").value;
- if (userName == "" || userName == null) {
- document.getElementById("nameMeg").style.color = "red";
- document.getElementById("nameMeg").innerHTML = "用户名为6-10位英文或数字";
- }
- else {
- ajax("../userhandle.ashx?operate=checkName&userName=" + userName, function (resText) {
- if (resText == "forbid") {
- document.getElementById("nameMeg").style.color = "red";
- document.getElementById("nameMeg").innerHTML = "用户名含有非法词语";
- } else if (resText == "already have") {
- document.getElementById("nameMeg").style.color = "red";
- document.getElementById("nameMeg").innerHTML = "用户名已被使用";
- } else {
- document.getElementById("nameMeg").style.color = "green";
- document.getElementById("nameMeg").innerHTML = "可以使用";
- }
- })
- }
- }
AJax登录。。转的更多相关文章
- ajax登录验证-js
1.html代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)
一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 from app01 import views urlpatterns = [ path('admin/', admi ...
- Ajax登录用户名密码
<script src="http://code.jquery.com/jquery-latest.js"></script>#引入jQuery#当点击函数 ...
- Django Ajax登录 防止CSRF
什么是CSRF 维基百科: 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CS ...
- Django 博客项目01 数据库设计与验证码校验+Ajax登录
数据库设计 from django.db import models from django.contrib.auth.models import AbstractUser class UserInf ...
- 知问前端——Ajax登录
本文,将使用Ajax登录. 一.服务器端代码 is_user.php: <?php require 'config.php'; $query = mysql_query("SELECT ...
- 巨蟒python全栈开发django10:ajax&&登录认证
通过题目进行知识点回顾: 聚合查询 From django.db.models import Avg,Min,Max,F,Q,Count,Sum #查询书籍的平均值 Ret= Models.Book. ...
- 转:ajax的AntiForgery和Authorize 以及ajax登录例子
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/ashcn2001/article/det ...
- 项目:jSon和Ajax登录功能
组件化网页开发 / 步骤二 · 项目:jSon和Ajax登录功能 要熟练编写封装的$.ajax({........})
- 解决shiro自定义filter后,ajax登录无法登录,并且无法显示静态资源的问题
这个问题困扰了我一天,看了下面两个文章,豁然开朗: https://www.cnblogs.com/gj1990/p/8057348.html https://412887952-qq-com.ite ...
随机推荐
- 获取本地的IP地址(内网)
方法一 public static String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = N ...
- NetBeans invalid jdkhome specified 问题解决方法
JDK的路径变化会导致 NetBeans 启动时出现错误: 解决办法: There's is an easy way to fix this. Navigate to your NetBeans in ...
- 搭建Nginx+Java环境测试并且运行
一.简介: Tomcat在高并发环境下处理动态请求时性能很低,而在处理静态页面更加脆弱.虽然Tomcat的最新版本支持epoll,但是通过Nginx来处理静态页面要比通过Tomcat处理在性能方面好很 ...
- JavaCV配置
下载javacv-1.2-bin.zip https://github.com/bytedeco/javacv 解压 在Eclipse项目 Referenced Libraries 中 Add Ext ...
- iOS 创建模型时自动生成属性
转载 mark666(简书作者), 链接:http://www.jianshu.com/p/63ee533a7705 我们在创建模型的时候,常常要写一大堆恶心的@property(nonatomic, ...
- 【笔记】js清空cookie
$(function(){ function foreach(){ var strCookie=document.cookie; var arrCookie=strCookie.split(&qu ...
- thinkphp导入导出excel表单数据
在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...
- linux 查看目录所在的分区
df -h /data2 Filesystem Size Used Avail Use% Mounted on /dev/xvda1 20G .5G 12G % /
- 网站跨站点脚本,Sql注入等攻击的处理
从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可: http://bbs.webscan.360.cn/forum.p ...
- Linux学习内容
Linux学习要点(转载自红联) 一.学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz..rpm等软件 ...