用户提交用户名和密码 users.json里就新增了一行数据

思路

前端写一个 form,让用户填写 name 和 password
前端监听 submit 事件
前端发送 post 请求,数据位于请求体
后端接收 post 请求
后端获取请求体中的 name 和 password
后端存储数据

写一个form

  1. <form id="registerForm">
  2. <div>
  3. <label>用户名 <input type="text" name="name"></label>
  4. </div>
  5. <div>
  6. <label>密码 <input type="password" name="password"></label>
  7. </div>
  8. <div>
  9. <button type="submit">注册</button>
  10. </div>
  11. </form>

监听submit事件,发送AJAX请求

  1. <script>
  2. const $form = $('#registerForm')
  3. $form.on('submit', (e)=>{
  4. e.preventDefault()
  5. const name = $form.find('input[name=name]').val()
  6. const password = $form.find('input[name=password]').val()
  7. console.log(name, password)
  8. $.ajax({// 发送AJAX请求
  9. method: 'POST',// 使用POST请求
  10. url: '/register',
  11. contentType: 'text/json; charset=UTF-8',
  12. data: JSON.stringify({name, password})
  13. }).then(()=>{
  14. alert('注册成功')
  15. location.href = '/sign_in.html'
  16. }, ()=>{})
  17. })
  18. </script>

后端接收请求

  1. if (path === "/register" && method === "POST") {
  2. response.setHeader("Content-Type", "text/html; charset=utf-8");
  3. const userArray = JSON.parse(fs.readFileSync("./db/users.json"));// 读取数据库中的用户信息
  4. const array = [];// 创建一个空数组,数据可能是分段上传
  5. request.on("data", chunk => {
  6. array.push(chunk);
  7. });
  8. request.on("end", () => {
  9. const string = Buffer.concat(array).toString();
  10. const obj = JSON.parse(string);
  11. const lastUser = userArray[userArray.length - 1];
  12. const newUser = {// 拿到用户注册的数据
  13. // id 为最后一个用户的 id + 1
  14. id: lastUser ? lastUser.id + 1 : 1,
  15. name: obj.name,
  16. password: obj.password
  17. };
  18. userArray.push(newUser);// 放入数据库
  19. fs.writeFileSync("./db/users.json", JSON.stringify(userArray));
  20. response.end()
  21. });
  22. }