ajax (数据请求) 很重要
开发项目:
静态网站: 没有牵扯到数据请求 接口调用
动态网站: 数据的请求渲染
请求数据:
ajax : 原生的ajax
fetch : 原生的请求方法 js
axios : 后期框架中使用的方式 promise
jquery: $.ajax()
作用: 异步请求 局部更新网页
数据请求的方式:
get
post
axios
delete
options
put
patch
request
四种方式:增删改查
get : 获取
post : 添加
delete : 删除
put / patch : 修改
http状态码: 所有状态码的第一个数字代表了响应的五种状态之一。
1xx : 消息
2xx : 成功
3xx : 重定向
4xx : 客户端出错 请求错误
5xx : 服务器端出错 服务器错误
6xx :
200 OK
请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。
304:如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。
400 Bad Request
1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
2、请求参数有误。
401 Unauthorized 当前请求需要用户验证。
403 Forbidden : 服务器已经理解请求,但是拒绝执行它。
404 Not Found :请求失败,请求所希望得到的资源未被在服务器上发现
500 Internal Server Error :服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。
面试题:
常用的http状态码
304 完整的流程
案例1:
html:
<div class="wrapper"></div>
js:
1 let wrapper = document.querySelector('.wrapper') 2 // 创建 xhr 对象 3 let xhr = new XMLHttpRequest(); 4 // 建立连接 指定请求的方式 URL地址 5 // xhr.open(type, url, boolean); type:请求方式 url:请求地址 boolean : 同步/异步 默认异步请求 6 xhr.open('get', 'https://cnodejs.org/api/v1/topics'); 7 // 发送请求 8 xhr.send(); 9 // 监听事件 10 xhr.onreadystatechange = function () { 11 // 满足条件 请求成功的 12 // xhr.status : http 状态码 xhr.status == 200 13 // xhr.readyState : 数据响应的状态 xhr.readyState == 4 数据已就绪,返回 14 if (xhr.status == 200 && xhr.readyState == 4) { 15 // 获取数据 16 let result = JSON.parse(xhr.responseText); // json对象 : 有两个方法 1. json 对象转换为 json 字符串 : JSON.stringify(obj) 2. json 字符串 转换为 json 对象 : JSON.parse(obj)
17 console.log(result); 18 renderHtml(result) 19 } 20 } 21 22 // 数据渲染 23 function renderHtml(data) { 24 let html = ''; 25 data.data.forEach(function (item, index) { 26 html += ` 27 <img src='${item.author.avatar_url}' > 28 <p>${item.title}</p> 29 ` 30 }) 31 wrapper.innerHTML = html 32 }