• AJAX——HTTP协议


    1 HTTP协议-请求报文 

    HTTP协议:规定了浏览器发送及服务器返回内容的格式

    请求报文:浏览器按照HTTP协议要求的格式,发送给服务器的内容

    1.1 请求报文的格式

    请求报文的组成部分有:

    1. 请求行:请求方法,URL,协议
    2. 请求头:以键值对的格式携带的附加信息,比如:Content-Type
    3. 空行:分隔请求头,空行之后的是发送给服务器的资源
    4. 请求体:发送的资源

    1.2 查看请求报文

    首先,运行代码,按F12或右键检查

    点击查看源代码就可以看到请求报文了

    查看请求体,也可以查看源代码

    下面是使用谷歌Google Chrome浏览器查看的请求报文

    2 请求报文-错误排查

    需求:通过请求报文排查错误原因,并修复输入正确的用户名和密码无法登录

    用户名:itheima007

    密码:7654321

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>请求报文_辅助调试title>
    8. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css">
    9. <style>
    10. html,
    11. body {
    12. background-color: #EDF0F5;
    13. width: 100%;
    14. height: 100%;
    15. display: flex;
    16. justify-content: center;
    17. align-items: center;
    18. }
    19. .container {
    20. width: 520px;
    21. height: 540px;
    22. background-color: #fff;
    23. padding: 60px;
    24. box-sizing: border-box;
    25. }
    26. .container h3 {
    27. font-weight: 900;
    28. }
    29. style>
    30. <style>
    31. .form_wrap {
    32. color: #8B929D !important;
    33. }
    34. .form-text {
    35. color: #8B929D !important;
    36. }
    37. style>
    38. <style>
    39. .alert {
    40. transition: .5s;
    41. opacity: 0;
    42. }
    43. .alert.show {
    44. opacity: 1;
    45. }
    46. style>
    47. head>
    48. <body>
    49. <div class="container">
    50. <h3>欢迎-登录h3>
    51. <div class="alert alert-success" role="alert">
    52. JS中会动态插入提示文字
    53. div>
    54. <div class="form_wrap">
    55. <form>
    56. <div class="mb-3">
    57. <label for="username" class="form-label">账号名label>
    58. <input type="text" class="form-control username" name="username" aria-describedby="usernameHelp">
    59. div>
    60. <div class="mb-3">
    61. <label for="password" class="form-label">密码label>
    62. <input type="password" class="form-control password" name="password">
    63. div>
    64. <button type="button" class="btn btn-primary btn-login"> 登 录 button>
    65. form>
    66. div>
    67. div>
    68. <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js">script>
    69. <script>
    70. // 1.获取 alert
    71. const alertCom = document.querySelector('.alert')
    72. // 2.抽取提示框的方法
    73. function showAlert(msg, classname) {
    74. alertCom.innerText = msg
    75. alertCom.classList.add(classname)
    76. alertCom.classList.add('show')
    77. setTimeout(() => {
    78. // 延迟隐藏
    79. alertCom.classList.remove('show')
    80. alertCom.classList.remove(classname)
    81. }, 2000);
    82. }
    83. // 3.给登录按钮绑定点击事件,提交输入的用户信息到服务器
    84. document.querySelector('.btn-login').addEventListener('click', function () {
    85. // 3.1 获取输入的用户名和密码
    86. const username = document.querySelector('.username').value
    87. const password = document.querySelector('.password').value
    88. // 3.2用户名 密码 长度判断
    89. if (username.trim().length < 8) {
    90. showAlert('用户名长度需要大于等于8', 'alert-danger')
    91. return
    92. }
    93. if (password.trim().length < 6) {
    94. showAlert('密码长度需要大于等于6', 'alert-danger')
    95. return
    96. }
    97. // 3.3 通过axios提交到服务器 并 提示用户 成功 / 失败
    98. axios({
    99. url: 'http://hmajax.itheima.net/api/login',
    100. method: 'post',
    101. data: {
    102. username,
    103. password
    104. }
    105. }).then(res => {
    106. // 显示提示框
    107. showAlert(res.data.message, 'alert-success')
    108. }).catch(err => {
    109. // 显示警示框
    110. showAlert(err.response.data.message, 'alert-danger')
    111. })
    112. })
    113. script>
    114. body>
    115. html>

    3 HTTP协议-响应报文

    HTTP协议:规定了浏览器发送及服务器返回内容的格式

    响应报文:服务器按照HTTP协议要求的格式,返回给浏览器的内容

    1.相应行(状态行):协议、HTTP响应状态码、状态信息

    2.响应头:以键值对的格式携带的附加信息,比如:Content-Type

    3.空行:分隔响应头,空行之后的是服务器返回的资源

    4.响应体:返回的资源

    错误的响应报文

    3.1 HTTP响应状态码

    用来表明请求是否成功完成

    比如:404(服务器找不到资源)

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>HTTP协议_响应报文title>
    8. head>
    9. <body>
    10. <button class="btn">注册用户button>
    11. <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js">script>
    12. <script>
    13. /*
    14. 注册用户: http://hmajax.itheima.net/api/register
    15. 请求方法: POST
    16. 参数名:
    17. username: 用户名 (中英文和数字组成, 最少8位)
    18. password: 密码 (最少6位)
    19. 目标: 点击按钮, 通过axios提交用户和密码, 完成注册
    20. 需求: 使用axios错误处理语法, 拿到报错信息, 弹框反馈给用户
    21. */
    22. document.querySelector('.btn').addEventListener('click', () => {
    23. axios({
    24. url: 'http://hmajax.itheima.net/api/registrweer1ddd',
    25. method: 'post',
    26. data: {
    27. username: 'itheima007',
    28. password: '7654321'
    29. }
    30. }).then(result => {
    31. // 成功
    32. console.log(result)
    33. }).catch(error => {
    34. // 失败
    35. // 处理错误信息
    36. // console.log(error)
    37. console.log(error.response.data.message)
    38. // alert(error.response.data.message)
    39. })
    40. })
    41. script>
    42. body>
    43. html>

    运行结果:

  • 相关阅读:
    LAMP平台搭建
    程序员突如其来的生日惊喜
    零基础html学习/刷题-第一期
    如何报考产品总监认证(UCPD)?
    《Python机器学习与可视化分析实战》简介
    640.Solve the Equation
    [Mybatis-Plus笔记] MybatisPlus-05-id生成策略,多数据操作,逻辑删除
    springboot基于知识图谱的短视频推荐系统设计与实现毕业设计源码231115
    【表白单页模板】纯HTML表白+唯美3D动态相册表白网站制作(html+css+js)
    运放参数-快速了解输入偏置电流Ib和输入失调电流Ib_os参数-运算放大器
  • 原文地址:https://blog.csdn.net/weixin_48719464/article/details/136098349