当用户在注册时输入用户名,我们需要验证该用户名是否已被其他用户使用。为了避免页面刷新,我们可以使用Ajax异步技术实现用户名验证。
1. 编写前端页面
在前端页面中添加一个input
输入框用于输入用户名,一个button
按钮用于触发Ajax请求验证用户名是否存在。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>验证用户名是否存在</title>
</head>
<body>
<input type="text" id="username" placeholder="请输入用户名">
<button type="button" id="check">验证</button>
<script>
// 注册按钮点击事件
const btn = document.querySelector('#check');
btn.addEventListener('click', function() {
checkUsername();
});
// 发送Ajax请求
function checkUsername() {
const username = document.querySelector('#username').value;
const xhr = new XMLHttpRequest();
xhr.open('GET', '/check?username=' + username);
xhr.send();
xhr.onreadystatechange = function() {
if(xhr.readyState === 4 && xhr.status === 200) {
const data = JSON.parse(xhr.responseText);
console.log(data);
}
}
}
</script>
</body>
</html>
2. 编写后端接口
在后端服务器中,我们需要编写一个接口用于接收前端页面发送的Ajax请求,查询数据库中是否已有该用户名。
// 引入模块
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
// 用户名是否可用的查询接口
app.get('/check', (req, res) => {
const username = req.query.username; // 获取前端发送的用户名参数
// 调用查询函数进行判断
const isValid = checkUsername(username);
if(isValid) {
const data = {code: 0, message: '用户名可用'}; // 可用
res.send(JSON.stringify(data));
} else {
const data = {code: 1, message: '用户名已存在'}; // 不可用
res.send(JSON.stringify(data));
}
});
// 模拟查询函数
function checkUsername(username) {
const list = ['jack', 'tom', 'lucy'];
return !list.includes(username);
}
// 启动服务器
const port = 3000;
app.listen(port, () => console.log(`server started at http://localhost:${port}`));
3. 示例说明
示例一:用户名可用
当用户输入一个未被占用的用户名hello
并点击验证按钮后,在控制台上将输出:
code: 0, message: "用户名可用"
示例二:用户名已存在
当用户输入一个已被占用的用户名tom
并点击验证按钮后,在控制台上将输出:
code: 1, message: "用户名已存在"
以上示例说明了使用原生态JS实现Ajax验证用户名的完整攻略,通过Ajax异步技术,我们可以在不刷新页面的情况下,即时验证用户名是否存在,从而提高用户体验。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Ajax使用原生态JS验证用户名是否存在 - Python技术站