1. 点击 button 按钮 submit 数据并接收服务端的回应
```js
$('#register_form').on('submit', function (e) {
e.preventDefault() // 禁止点击默认的跳转事件
var formData = $(this).serialize() // 获得表单数据,并序列化,是 string 类型
$.ajax({
url: '/register',
type: 'post',
data: formData,
dataType: 'json', // 把 收到的 json 数据转为对象
success: function (data) {
var err_code = data.err_code;
if(err_code === 0) {
alert('注册成功');
} else if (err_code === 1) {
alert('用户名或邮箱已被使用')
} else if (err_code === 500) {
alert('服务器忙,请稍后重试')
}
}
})
})
```
2. 服务端接收数据,并做出回应
```js
// 提交注册
router.post('/register', function (req, res) {
// 1. 获取表单提交的数据
// req.body
// 2. 操作数据库
// 判断该用户是否存在,
// 如果已经存在,不允许注册
// 如果不存在,注册新建用户
// 3. 发送响应
// console.log(req.body);
var body = req.body;
User.findOne({
// email: body.email
$or: [ { email: body.email },{ nickname: body.nickname } ]
}, function (err, data) {
if (err) {
return res.status(500).json({
success: false,
message: '服务端错误'
});
}
if (data) {
// 邮箱或者昵称已经存在
return res.status(200).json({
err_code: 1,
message: 'Email or nickname already exists'
})
}
new User(body).save(function (err, user) {
if (err) {
return res.status(500).json({
success: false,
message: 'Server error'
})
}
// Express 提供了一个响应方法:json
// 该方法接收一个对象作为参数,它会自动帮你把对象转为字符串再发送给浏览器
res.status(200).json({
err_code: 0,
message: 'OK'
});
})
})
})
```
