案例:验证邮箱地址唯一性(ajax)
一.步骤
- 获取文本框并为其添加离开焦点事件
- 离开焦点时,检测用户输入的邮箱地址是否符合规则
- 如果不符合规则,阻止程序向下执行并给出提示信息
- 向服务器端发送请求,检测邮箱地址是否被别人注册
- 根据服务器端返回值决定客户端显示何种提示信息
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>验证邮箱地址是否已经注册</title> 6 <link rel="stylesheet" href="/assets/bootstrap/dist/css/bootstrap.min.css"> 7 <style type="text/css"> 8 p:not(:empty) { 9 padding: 15px; 10 } 11 .container { 12 padding-top: 100px; 13 } 14 </style> 15 </head> 16 <body> 17 <div class="container"> 18 <div class="form-group"> 19 <label>邮箱地址</label> 20 <input type="email" class="form-control" placeholder="请输入邮箱地址" id="email"> 21 </div> 22 <!-- 错误 bg-danger 正确 bg-success --> 23 <p id="info"></p> 24 </div> 25 <script src="/js/ajax.js"></script> 26 <script> 27 // 获取页面中的元素 28 var emailInp = document.getElementById('email'); 29 var info = document.getElementById('info'); 30 31 // 当文本框离开焦点以后 32 emailInp.onblur = function () { 33 // 获取用户输入的邮箱地址 34 var email = this.value; 35 // 验证邮箱地址的正则表达式 36 var reg = /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/; 37 // 如果用户输入的邮箱地址不符合规则 38 if (!reg.test(email)) { 39 // 给出用户提示 40 info.innerHTML = '请输入符合规则的邮箱地址'; 41 // 让提示信息显示为错误提示信息的样式 42 info.className = 'bg-danger'; 43 // 阻止程序向下执行 44 return; 45 } 46 47 // 向服务器端发送请求 48 ajax({ 49 type: 'get', 50 url: 'http://localhost:3000/verifyEmailAdress', 51 data: { 52 email: email 53 }, 54 success: function (result) { 55 console.log(result); 56 info.innerHTML = result.message; 57 info.className = 'bg-success'; 58 }, 59 error: function (result) { 60 console.log(result) 61 info.innerHTML = result.message; 62 info.className = 'bg-danger'; 63 } 64 }); 65 66 } 67 </script> 68 </body> 69 </html>
服务端代码
1 1 // 引入express框架
2 2 const express = require('express');
3 3 // 路径处理模块
4 4 const path = require('path');
5 // 创建web服务器
6 const app = express();
7 // 静态资源访问服务功能
8 app.use(express.static(path.join(__dirname, 'public')));
9 // 邮箱地址验证
10 app.get('/verifyEmailAdress', (req, res) => {
11 // 接收客户端传递过来的邮箱地址
12 const email = req.query.email;
13 // 判断邮箱地址注册过的情况
14 if (email == 'itheima@itcast.cn') {
15 // 设置http状态码并对客户端做出响应
16 res.status(400).send({message: '邮箱地址已经注册过了, 请更换其他邮箱地址'});
17 } else {
18 // 邮箱地址可用的情况
19 // 对客户端做出响应
20 res.send({message: '恭喜, 邮箱地址可用'});
21 }
22 });

浙公网安备 33010602011771号