diff --git "a/29 \350\267\257\347\216\262/20231207 \350\201\212\345\244\251\346\241\206.md" "b/29 \350\267\257\347\216\262/20231207 \350\201\212\345\244\251\346\241\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..6af7236b2622cb86aaceb2c388bcb6012a87e329 --- /dev/null +++ "b/29 \350\267\257\347\216\262/20231207 \350\201\212\345\244\251\346\241\206.md" @@ -0,0 +1,666 @@ +1. 什么是 AJAX ? [mdn](https://developer.mozilla.org/zh-CN/docs/Web/Guide/AJAX/Getting_Started) + + * 使用浏览器的 XMLHttpRequest 对象 与服务器通信 + + * 浏览器网页中,使用 AJAX技术(XHR对象)发起获取省份列表数据的请求,服务器代码响应准备好的省份列表数据给前端,前端拿到数据数组以后,展示到网页 + + ![image-20230403173156484](images/image-20230403173156484.png) + +2. 什么是服务器? + + * 可以暂时理解为提供数据的一台电脑 + +3. 为何学 AJAX ? + + * 以前我们的数据都是写在代码里固定的, 无法随时变化 + * 现在我们的数据可以从服务器上进行获取,让数据变活 + +4. 怎么学 AJAX ? + + * 这里使用一个第三方库叫 axios, 后续在学习 XMLHttpRequest 对象了解 AJAX 底层原理 + * 因为 axios 库语法简单,让我们有更多精力关注在与服务器通信上,而且后续 Vue,React 学习中,也使用 axios 库与服务器通信 + +5. 需求:从服务器获取省份列表数据,展示到页面上(体验 axios 语法的使用) + + > 获取省份列表数据 - 目标资源地址:http://hmajax.itheima.net/api/province + + * 完成效果: + + ![image-20230220113157010](images/image-20230220113157010.png) + +6. 接下来讲解 axios 语法,步骤: + + 1. 引入 axios.js 文件到自己的网页中 + + > axios.js文件链接: https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js + + 2. 明确axios函数的使用语法 + + ```js + axios({ + url: '目标资源地址' + }).then((result) => { + // 对服务器返回的数据做后续处理 + }) + ``` + + > 注意:请求的 url 地址, 就是标记资源的网址 + > + > 注意:then 方法这里先体验使用,由来后续会讲到 + + + +7. 对应代码 + + ```html + + + + + + + + AJAX概念和axios使用 + + + + +

+ + + + + + ``` + + + +### 小结 + +1. AJAX 有什么用? + +
+ 答案 + +
+ + + +2. AJAX 如何学: + +
+ 答案 + +
+ + + +3. 这一节 axios 体验步骤(语法)? + +
+ 答案 + +
+ + + +## 02.认识 URL + +### 目标 + +了解 URL 的组成和作用 + + + +### 讲解 + +1. 为什么要认识 URL ? [mdn](https://developer.mozilla.org/zh-CN/docs/Web/Guide/AJAX/Getting_Started) + + * 虽然是后端给我的一个地址,但是哪部分标记的是服务器电脑,哪部分标记的是资源呢?所以为了和服务器有效沟通我们要认识一下 + +2. 什么是 URL ? + + * 统一资源定位符,简称网址,用于定位网络中的资源(资源指的是:网页,图片,数据,视频,音频等等) + + ![image-20230403185206384](images/image-20230403185206384.png) + +3. URL 的组成? + + * 协议,域名,资源路径(URL 组成有很多部分,我们先掌握这3个重要的部分即可) + + ![image-20230403185305934](images/image-20230403185305934.png) + + + +4. 什么是 http 协议 ? + + * 叫超文本传输协议,规定了浏览器和服务器传递数据的格式(而格式具体有哪些稍后我们就会学到) + + ![image-20230403185356997](images/image-20230403185356997.png) + +5. 什么是域名 ? + + * 标记服务器在互联网当中的方位,网络中有很多服务器,你想访问哪一台,就需要知道它的域名才可以 + + ![image-20230403185406674](images/image-20230403185406674.png) + +6. 什么是资源路径 ? + + * 一个服务器内有多个资源,用于标识你要访问的资源具体的位置 + + ![image-20230403185428276](images/image-20230403185428276.png) + +7. 接下来做个需求,访问新闻列表的 URL 网址,打印新闻数据 + + * 效果图如下: + + ![image-20230220122455915](images/image-20230220122455915.png) + + > 新闻列表数据 URL 网址:http://hmajax.itheima.net/api/news + + ```js + axios({ + url: 'http://hmajax.itheima.net/api/news' + }).then(result => { + console.log(result) + }) + ``` + + > url解释:从黑马服务器使用http协议,访问/api/news路径下的新闻列表资源 + + + +### 小结 + +1. URL 是什么? + +
+ 答案 + +
+ + + +2. 请解释这个 URL,每个部分作用? + + http://hmajax.itheima.net/api/news + +
+ 答案 + +
+ + + +## 03.URL 查询参数 + +### 目标 + +掌握-通过URL传递查询参数,获取匹配的数据 + + + +### 讲解 + +1. 什么是查询参数 ? + + * 携带给服务器额外信息,让服务器返回我想要的某一部分数据而不是全部数据 + * 举例:查询河北省下属的城市列表,需要先把河北省传递给服务器 + + ![image-20230404101257205](images/image-20230404101257205.png) + +2. 查询参数的语法 ? + + * 在 url 网址后面用?拼接格式:http://xxxx.com/xxx/xxx?参数名1=值1&参数名2=值2 + * 参数名一般是后端规定的,值前端看情况传递即可 + +3. axios 如何携带查询参数? + + * 使用 params 选项即可 + + ```js + axios({ + url: '目标资源地址', + params: { + 参数名: 值 + } + }).then(result => { + // 对服务器返回的数据做后续处理 + }) + ``` + + > 查询城市列表的 url地址:[http://hmajax.itheima.net/api/city](http://hmajax.itheima.net/api/city?pname=河北省) + > + > 参数名:pname (值要携带省份名字) + +4. 需求:获取“河北省”下属的城市列表,展示到页面,对应代码: + + ```html + + + + + + + 查询参数 + + + +

+ + + + + ``` + + + +## 作业 + +有点瑕疵,在按回车后不能清空信息 + +```html + + + + + + + + 聊天机器人 + + + + + + + + + + + + + + + + + + + + +
+ +
+ 9:41 +
+ + + +
+
+ +
+ + 使劲夸夸 +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+
+ + + + + +``` +