From 42f4da23b84b75aaebb201502f4abe6584a51a34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A2=E4=BD=B3=E5=87=AF?= <1368935475@qq.com> Date: Fri, 2 Dec 2022 23:38:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\347\254\224\350\256\260/11.28jQuery5.md" | 75 +++++++++++ .../\347\254\224\350\256\260/11.29Ajax.md" | 119 ++++++++++++++++++ .../\347\254\224\350\256\260/11.30Ajax2.md" | 38 ++++++ .../\347\254\224\350\256\260/12.1promise.md" | 41 ++++++ 4 files changed, 273 insertions(+) create mode 100644 "04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.28jQuery5.md" create mode 100644 "04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.29Ajax.md" create mode 100644 "04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.30Ajax2.md" create mode 100644 "04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/12.1promise.md" diff --git "a/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.28jQuery5.md" "b/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.28jQuery5.md" new file mode 100644 index 0000000..f59f6d5 --- /dev/null +++ "b/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.28jQuery5.md" @@ -0,0 +1,75 @@ +## jQuery first() 方法 + +first() 方法返回被选元素的首个元素。 + +下面的例子选取首个 + +元素内部的第一个 + +元素: + +### 实例 + +``` +$(document).ready(function(){ + $("div p").first(); +}); +``` + + + +## jQuery last() 方法 + +last() 方法返回被选元素的最后一个元素。 + +下面的例子选择最后一个 + +元素中的最后一个 + +元素: + +### 实例 + +``` +$(document).ready(function(){ + $("div p").last(); +}); +``` + + + +## jQuery eq() 方法 + +eq() 方法返回被选元素中带有指定索引号的元素。 + +索引号从 0 开始,因此首个元素的索引号是 0 而不是 1。下面的例子选取第二个 + +元素(索引号 1): + +### 实例 + +``` +$(document).ready(function(){ + $("p").eq(1); +}); +``` + + + +## jQuery not() 方法 + +not() 方法返回不匹配标准的所有元素。 + +**提示:**not() 方法与 filter() 相反。 + +下面的例子返回不带有类名 "intro" 的所有 + +元素: + +### 实例 + +``` +$(document).ready(function(){ + $("p").not(".intro"); +}); +``` \ No newline at end of file diff --git "a/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.29Ajax.md" "b/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.29Ajax.md" new file mode 100644 index 0000000..7eb0126 --- /dev/null +++ "b/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.29Ajax.md" @@ -0,0 +1,119 @@ +# Ajax + +### 1.什么是Ajax + +Ajax(Asynchronous Javascript And XML),即是异步的JavaScript和XML,Ajax其实就是浏览器与服务器之间的一种异步通信方式 + +### 异步的JavaScript + +它可以异步地向服务器发送请求,在等待响应的过程中,不会阻塞当前页面,在这种情况下,浏览器可以做自己的事情。直到成功获取响应后,浏览器才开始处理响应数据。 + +### XML + +是前后端数据通信时传输数据的一种格式,现在已经不怎么用了,现在比较常用的是 JSON + +所以归纳上述的概念,Ajax就是在浏览器不重新加载网页的情况下,对页面的某部分进行更新。 + +### 2.应用场景 + +**注册页面** + +**搜索提示** + +# 二、实现Ajax + +``` +//test.josn的代码 +{ + "reply":"我收到啦!" +} +``` + + + +``` +const xhr = new XMLHttpRequest(); +xhr.onreadystatechange = () => { + if (xhr.readyState !== 4) return; + if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) { + console.log(xhr.responseText); + } +}; +xhr.open('GET', 'text.json', true); +xhr.send(null); +``` + + + +## 执行步骤 + +### **1.创建xhr对象** + +``` +const xhr = new XMLHttpRequest(); +``` + + + +### **2.利用onreadystatechange属性,封装一个函数,用于监听 readyState的变化。** + +``` +xhr.onreadystatechange = () => { +if (xhr.readyState !== 4) return; +if (xhr.status >= 200 && xhr.status < 300 ){ + console.log(xhr.responseText); + } +}; +``` + + + +**2.1在xhr对象执行收发数据的时候,它会经历五种状态:** + +| Ajax状态码 | 状态 | +| ---------- | ------------------------------------------------------------ | +| 0 | (**未初始化**)未启动 | +| 1 | (**启动**)已经调用 open(),但尚未调用 send() | +| 2 | (**发送**)发送状态,已经调用 send(),但尚未接收到响应 | +| 3 | (**接收**)已经接收到部分响应数据 | +| 4 | (**完成**)已经接收到全部响应数据,而且已经可以在浏览器中使用了 | + +**2.2判断HTTP状态码是否为200-299** + +Ajax状态码为4是不够的,这仅仅表明收到服务器端响应的全部数据,并不能保障数据都是正确的。 + +所以,我们还需要判断HTTP的状态码,判断xhr对象的status属性值是否在200到300之间(200-299 用于表示请求成功) + +``` +if (xhr.status >= 200 && xhr.status < 300 ){ + console.log(xhr.responseText); +} +``` + + + +**所以要想请求成功完成****,**必须要满足上面两个条件。** + +### **3.准备发送请求** + +``` +xhr.open('GET','text.json', true); +``` + + + +参数1:选用"GET"或者“POST”的请求方式 + +参数2:发送请求的地址 + +参数3:是否异步 + +### 4.发送请求 + +``` +xhr.send(null) +``` + + + +注意:send() 的参数是通过请求体携带的数据,而GET请求是通过请求头携带数据的,所以要把send的参数置为null \ No newline at end of file diff --git "a/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.30Ajax2.md" "b/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.30Ajax2.md" new file mode 100644 index 0000000..bbebcf1 --- /dev/null +++ "b/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/11.30Ajax2.md" @@ -0,0 +1,38 @@ +**jquery与ajax的区别:** + +**AJAX** + +AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。 + +组成: + +- 基于XHTML和CSS标准的表示; +- 使用Document Object Model进行动态显示和交互; +- 使用XML和XSLT做数据交互和操作; +- 使用XML HttpRequest与服务器进行异步通信; +- 使用JavaScript绑定一切。 + +**jquery与ajax的区别:** + +- Ajax是一门技术,它提供了异步更新的机制,使用客户端与服务器间交换数据而非整个页面文档,实现页面的局部更新。 +- jQuery是一个库,它对JS进行了封装,使其更方便使用。jQuery使得JS与Ajax的使用更方便。 + +区别就在于Ajax是一种异步请求技术,而jQuery对Ajax进行了封装,更方便我们使用。 + + + +使用 AJAX 请求改变 + +元素的文本: + +``` +$("button").click(function(){ $.ajax({url:"demo_test.txt",success:function(result){ $("#div1").html(result); }}); }); +``` + + + +## 定义和用法 + +ajax() 方法用于执行 AJAX(异步 HTTP)请求。 + +所有的 jQuery AJAX 方法都使用 ajax() 方法。该方法通常用于其他方法不能完成的请求。 \ No newline at end of file diff --git "a/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/12.1promise.md" "b/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/12.1promise.md" new file mode 100644 index 0000000..e26bf03 --- /dev/null +++ "b/04\345\215\242\344\275\263\345\207\257/\347\254\224\350\256\260/12.1promise.md" @@ -0,0 +1,41 @@ +# promise + +Promise 是异步编程的一种解决方案:从语法上讲,promise是一个对象,从它可以获取异步操作的消息;从本意上讲,它是承诺,承诺它过一段时间会给你一个结果。promise有三种状态: **pending(等待态),fulfiled(成功态),rejected(失败态)**;状态一旦改变,就不会再变。创造promise实例后,它会立即执行。 + +### Promise 对象有以下两个特点: + +1、对象的状态不受外界影响。Promise 对象代表一个异步操作,有三种状态: + +- pending: 初始状态,不是成功或失败状态。 +- fulfilled: 意味着操作成功完成。 +- rejected: 意味着操作失败。 + +### promise是用来解决两个问题的: + +- 回调地狱,代码难以维护, 常常第一个的函数的输出是第二个函数的输入这种现象 +- promise可以支持多个并发的请求,获取并发请求中的数据 +- 这个promise可以解决异步的问题,本身不能说promise是异步的 + +### Promise 创建 + +要想创建一个 promise 对象、可以使用 new 来调用 Promise 的构造器来进行实例化。 + +创建 promise 的步骤: + +``` +var promise = new Promise(function(resolve, reject) { + // 异步处理 + // 处理结束后、调用resolve 或 reject +}); +``` + +``` +var myFirstPromise = new Promise(function(resolve, reject){ + //当异步代码执行成功时,我们才会调用resolve(...), 当异步代码失败时就会调用reject(...) + //在本例中,我们使用setTimeout(...)来模拟异步代码,实际编码时可能是XHR请求或是HTML5的一些API方法. + setTimeout(function(){ + resolve("成功!"); //代码正常执行! + }, 250); +}); +``` + -- Gitee