众所周知,我们每次需要注册一个网站的用户名时,都会校验该邮箱、用户名是不是正确的格式、是不是有被使用过,密码是否符合规则,二次确认是否符合。

如果这些校验都采用form表单提交的话,会给用户带来极不好的体验(form表单提交会刷新网页)。

因此,在此引出ajax的一个作用:局部刷新(用户看不到的刷新)。下面是用于注册示例ajax的局部刷新的简单示例:

注册页面:

ajax代码:

<script>
{#取得iuputEmail框中的内容#}
{#inputeamil = $('#i1').val()#}
{#给邮箱绑定监听事件(失去焦点)#}
$("#i1").blur(function () {
{#隐藏p标签(作用:当检验成功时起作用)#}
$("#emailTip").hide()
$.ajax({
url: "/email_check/",
type: "get",
data: {email:$('#i1').val()},
success: function f(data) {
{#ajax中的判断逻辑与python有区别#}
if (data != "False"){
{#alert(data)#}
$("#emailTip").show()
$("#emailTip").html(data)
}
}
})
}) {#检验帐号#}
$("#inputUserName").blur(function () {
{#隐藏p标签(作用:当检验成功时起作用)#}
$("#userTip").hide()
$.ajax({
url: "/user_check/",
type: "get",
data: {user: $('#inputUserName').val()},
success: function f(data) {
{#ajax中的判断逻辑与python有区别#}
if (data != "False"){
{#alert(data)#}
{#给p标签添加文本(html)内容#}
$("#userTip").show()
$("#userTip").html(data)
}
}
})
}) {#检验密码01 #}
$("#inputPassword1").blur(function () {
$("#pwdTip1").hide()
$.ajax({
url: "/pwd_check1/",
type: "get",
data: {pwd1: $('#inputPassword1').val()},
success: function f(data) {
{#ajax中的判断逻辑与python有区别#}
if (data != "False"){
{#alert(data)#}
{#给p标签添加文本(html)内容#}
$("#pwdTip1").show()
$("#pwdTip1").html(data)
}
}
})
}) {#校验密码02#}
$("#inputPassword2").blur(function () {
$("#pwdTip2").hide()
$.ajax({
url: "/pwd_check2/",
type: "get",
data: {pwd2: $('#inputPassword2').val(), pwd1:$('#inputPassword1').val()},
success: function f(data) {
{#ajax中的判断逻辑与python有区别#}
if (data != "False"){
{#alert(data)#}
{#给p标签添加文本(html)内容#}
$("#pwdTip2").show()
$("#pwdTip2").html(data)
}
}
})
})
</script>

校验代码(views):

# 校验邮箱
def email_check(request):
check_email = request.GET.get("email")
print(check_email)
if check_email:
check_ret = models.UserInfo.objects.filter(email=check_email)
if check_ret:
return HttpResponse("邮箱地址已被使用!")
else:
re_result = re.findall('[a-zA-Z0-9]+@[a-zA-Z0-9\.]+[a-zA-Z]', check_email)
if re_result:
return HttpResponse(False)
else:
return HttpResponse("邮箱地址格式错误!")
else:
return HttpResponse("邮箱地址不能为空!")
# print(email_all) # 校验用户名
def user_check(request):
check_user = request.GET.get("user")
print(check_user)
if check_user:
check_ret = models.UserInfo.objects.filter(userName=check_user)
if check_ret:
return HttpResponse("帐号已被使用!")
else:
return HttpResponse(False)
else:
return HttpResponse("帐号不能为空!") # 检验密码
def pwd_check1(request):
check_pwd1 = request.GET.get("pwd1")
if not check_pwd1:
return HttpResponse("密码不能为空!")
else:
pwd1_len = len(check_pwd1)
re_pwd1 = '^[a-zA-Z][0-9A-Za-z_]+'
re_result = re.findall(re_pwd1, check_pwd1)
if re_result:
if pwd1_len >= 8 and pwd1_len <= 16:
return HttpResponse(False)
else:
return HttpResponse("密码格式为:字母开头,含数字字母下划线,长度大于8且小于16")
else:
return HttpResponse("密码格式为:字母开头,含数字字母下划线,长度大于8且小于16") # 确认密码
def pwd_check2(request):
pwd1 = request.GET.get("pwd1")
pwd2 = request.GET.get("pwd2")
print(pwd1, pwd2)
print(pwd1 == pwd2)
if pwd1 == pwd2:
return HttpResponse(False)
else:
return HttpResponse("两次输入密码不一致!")

代码的逻辑适合小白看(比较臃肿),求大神多多指点!

AJAX的简单示例:注册校验的更多相关文章

  1. AJAX实现简单的注册页面异步请求

    p { margin: 0px; padding: 0px } AJAX简介 (1)AJAX = 异步 JavaScript 和 XML. (2)AJAX 是一种用于创建快速动态网页的技术. (3)通 ...

  2. 转贴:JavaScript实现Ajax请求简单示例

    转至:https://my.oschina.net/u/658145/blog/167651 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 ...

  3. Spring MVC 文件上传简单示例(form、ajax方式 )

    1.Form Upload SpringMVC 中,文件的上传是通过 MultipartResolver 实现的,所以要实现上传,只要注册相应的 MultipartResolver 即可. Multi ...

  4. 关于Ajax实现的简单示例

    一.代码示例 关于Ajax的基本概念(包括XMLHttpRequest对象及其相关方法属性)移步这里(w3school中文版)学习了解. <!doctype html> <html ...

  5. Net Core Identity 身份验证:注册、登录和注销 (简单示例)

    一.前言 一般我们自己的系统都会用自己设置的一套身份验证授权的代码,这次用net core的identity来完成简单的注册.登录和注销. 二.数据库 首先就是创建上下文,我这里简单的建了Users和 ...

  6. php+jquery+ajax+json简单小例子

    直接贴代码: <html> <title>php+jquery+ajax+json简单小例子</title> <?php header("Conte ...

  7. Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...

  8. [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...

  9. SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序

    SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论   异常汇总:http://www ...

随机推荐

  1. libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)

    In Xcode 9 and Swift 4: Print exception stack to know the reason of the exception: Go to show break ...

  2. selenium如何屏蔽谷歌浏览器弹出的通知

    使用selenium访问新浪微博的时候  浏览器总会有个通知,需要点击  类似下面这样 下面使用chromeoptions来修改浏览器的设置 from selenium import webdrive ...

  3. CSS3 3D图片立方体旋转

    html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  4. 请为CMyString类型编写构造函数、copy构造函数、析构函数和赋值运算符函数。

    如下为类型CMyString的声明,请为该类型编写构造函数.copy构造函数.析构函数和赋值运算符函数. class CMyString { public: CMyString(const char* ...

  5. 『Python』为什么调用函数会令引用计数+2

    一.问题描述 Python中的垃圾回收是以引用计数为主,分代收集为辅,引用计数的缺陷是循环引用的问题.在Python中,如果一个对象的引用数为0,Python虚拟机就会回收这个对象的内存. sys.g ...

  6. java多线程高并发知识总结

    1.      计算机系统 使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行:当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了. 缓 ...

  7. Mxnet编译安装

    在安装之前请你们自行安装好cuda和cudnn,记得修改环境变量并且source一下,下面讲一下mxnet的安装 严格按照我的所有的指令 sudo apt-get update sudo apt-ge ...

  8. Python中对字符串的操作

    Python字符串的相关操作 1.字符串格式判断 s.isalnum() #所有字符都是数字或者字母 s.isalpha() #所有字符都是字母 s.isdigit() #所有字符都是数字 s.isl ...

  9. Saiku数据库迁移后的刷新脚本-Shell脚本读取数据库中的数据(二十三)

    Saiku数据库迁移后的刷新脚本 之前有谈过对saiku中的数据进行刷新,因为saiku默认会从缓存中查询数据,但是配置不使用缓存又会效率低下... 所以这里就需要做一个数据刷新,每次ETL之后都需要 ...

  10. Ubuntu18.04安装常用软件

    一.VMwareWorkstation 1.到官网下载VmwareWorkstation,选择Linux版本 2.将下载下来的安装包放到桌面给予x权限,通过命令行进入到桌面的目录sudo ./执行安装 ...