前端复习之Ajax,忘完了

主宰稳场 提交于 2019-11-29 19:42:09
  1 *
  2  * Ajax
  3   * Asynchronous JavaScript and XML
  4   * 直译中文 - JavaScript和XML的异步
  5   * (不严格的定义)客户端与服务器端进行交互,而无需刷新当前页面的技术,称之为Ajax
  6   * Ajax实现的是B/S架构下的异步交互
  7  * 实现异步交互的技术
  8   * <iframe src="">元素
  9  * 同步与异步的区别
 10   * 同步交互 - 客户端向服务器发送请求,到服务器端进行响应,这个过程中,用户是不能做任何其他事情的
 11    * 执行速度相对比较慢
 12    * 响应的是完整的HTML代码
 13   * 异步交互 -  客户端向服务器端发送请求,直到服务器端进行响应,这个过程中,用户可以做任何其他事情的
 14    * 执行速度相对比较快
 15    * 响应的是部分数据
 16   * Ajax具有核心对象
 17    * XMLHttpRequest对象
 18  * 创建XMLHttpRequest对象
 19   *
 20   * 属性
 21    * readyState - 表示当前服务器的通信状态
 22      * 0 - (服务器端)尚未初始化
 23      * 1 - (服务器端)正在接收
 24      * 2 - (服务器端)接收完毕
 25      * 3 - (服务器端)正在响应
 26      * 4 - (服务器端)响应完毕
 27    * status
 28      * 200 - 请求成功
 29      * 404 - 网页找不到
 30      * 500 - 服务器端的错误
 31   * 方法
 32    * open(method,URL) - 与服务器端建立连接
 33    * send() - 向服务器端发送请求
 34   * 事件
 35    * onreadystatechange
 36     * 作用 - 监听服务器端的通信状态改变
 37  * 实现Ajax异步交互步骤:
 38   1.创建XMLHttpRequest核心对象
 39     固定方法
 40     function getXhr(){
 41         var xhr=null;
 42         if(window.XMLHttpRequest){
 43             xhr=new XMLHttpRequest();
 44         }else{
 45             xhr=new ActiveXObject("Microsoft.XMLHttp");
 46         }
 47         return xhr;
 48      }
 49   2.与服务器建立连接
 50     * 使用XMLHttpRequest对象的open(method,url)方法
 51      * method - 设置当前请求的类型
 52        * GET - 
 53        * POST - 
 54      * url - 设置当前请求的地址
 55   3.向服务发送请求
 56     * 使用XMLHttpRequest对象的send(请求参数)方法
 57      * 请求参数格式为 - key=value
 58      * GET - send(null)
 59        * send()方法不起作用
 60        * 请求数据 - 增加在URL?key=value
 61      * POST - send()
 62        * 在send()方法调用前,调用setRequestHeader()方法
 63        xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 64   4.接受服务器端的响应数据
 65     * 使用XMLHttpRequest对象的onreadystatechange事件,监听服务器端的通信状态
 66     * 使用XMLHttpRequest对象的readystate属性,判断服务器的当前状态(0-4)
 67     * 使用XMLHttpRequest对象的status属性,判断服务器端的状态码(200)
 68     * 使用XMLHttpRequest对象的responseText属性,接受服务器端的响应数据
 69  * GET与POST的区别
 70   * GET请求类型
 71    * send()方法不起作用,但是不能被省略
 72      xhr.send(null);
 73    * 请求参数 - 添加到url?key=value
 74   * POST请求类型
 75    * send()方法起作用
 76     * 在send()方法被调用前,使用setRequestHeader()方法设置请求头信息
 77       xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 78 * 使用Ajax的原则
 79  * 小则怡情,大则上身
 80 * 另外的实现ajax的步骤
 81   * 创建XMLHttpRequest对象
 82   * 注册监听
 83   * 建立链接
 84   * 发送请求
 85 *
 86 
 87 Day 02:
 88 * 接收服务器端的响应数据
 89   * 使用XMLHttpRequest核心对象的responseText属性
 90   * 该属性只能接收文本(HTML)格式
 91   * 问题
 92     * 解析过程比较复杂(拆串)
 93     * 拆串或拼串极容易出错
 94 * XML格式
 95   * 基本内容
 96     * HTML XHTML dhtml XML的区别
 97       * HTML就是网页 - 元素定义大小写
 98       * XHTML就是严格意义的HTML - 元素定义小写
 99       * DHTML - BOM|DOM
100       * XML - 配置文件|数据格式
101     * XML文件的扩展名为".xml"
102     * XML的定义方式与HTML非常相似
103       * HTML的元素预定义好的
104       * XML允许自定义元素
105     * XML的版本
106       * 1.0版本 - 
107       * 1.1版本 - 几乎没人用
108         * 版本不会再更xin
109     * XML的作用
110       * 作为数据格式 - 存储数据
111   * XML语法
112     * 声明
113       <?xml version="1.0"  encoding="UTF-8"?>
114       * version - 设置当前XML文件的版本
115       * encoding - 设置当前XML文件的编码
116       * 注意 - 必须出现在0行0列上
117     * 定义元素
118       * 根元素
119         * 必须是起始标签
120         * 只能定义一个
121       * 定义元素
122         * 元素名可以自定义
123         * 分类
124           * 起始标签或单标签
125     * 定义属性
126     * 定义注释
127       * 
128     *
129   *
130   * DOM解析XML
131     * 创建XML的解析器
132       
133      function parseXML(){
134         var xmlDoc=null;
135         if(window.DOMParser){
136             //其他浏览器
137             var parser=new DOMParser();
138             xmlDoc=parser.parseFromString("02.xml","application/xml");
139         }else{
140             //IE浏览器
141             var parser=new ActiveXObject("Microsoft.XMLDOM");
142             //异步
143             parser.async="false";
144             xmlDoc= parser.loadXML("02.xml");
145         }
146         return xmlDoc;
147 
148      }
149     * 解析XML与解析HTML一致
150       * 很少使用ById和ByName两个方法
151     * 注意
152       * 浏览器不允许读取外部的XML文件
153       * 浏览器解析符合XML格式的字符串
154     *
155   * Ajax中的XML格式
156     * 请求的数据格式 - XML
157       * 客户端如何构建符合XML格式的数据
158         * 构建的数据类型 - 字符串(string)类型
159         * 字符串的内容符合XML格式的语法要求
160       * 服务器端如何接收符合XML的数据
161         * 接收客户端的请求数据 - 字符串(string类型)
162         * PHP继承了DOM的相关内容
163           * DOMDocument
164           * DOMElement
165           * DOMNode
166     * 响应的数据格式 - xml
167       * 服务器端如何构建符合XML格式的数据
168         * 设置服务器端的响应头"Content-Type"值为"text/xml"
169         * 构建一个符合XML格式的字符串(string)类型
170           * 手动方式构建字符串string
171           * DOMDOcument对象的方法
172             * loadXML(符合XML格式的字符串)
173             * saveXML()方法进行响应
174       * 客户端如何接收符合XML格式的数据
175         * 使用XMLHttpRequest对象的responseText属性接收
176         * 接收回来的是XML DOM对象(不需要使用XML解析器解析)
177 * JSON格式
178   * 基本内容
179     * JSON - Javascript Object Notation(JS原生支持)
180   * JSON的结构
181     * Array
182     * Object
183     * 支持的数据类型
184       * String字符串
185       * Number数值
186       * Boolean
187       * Object
188       * Array
189       * null
190   * Ajax中的JSON格式
191     * 请求格式为JSON
192       * 客户端向服务器断发送请求 - JSON格式的数据
193         * 构建符合JSON格式的字符串
194         * 保证定义字符串时,使用单引号(里面使用双引号)
195       * 服务器端接收
196         * 接收客户端的数据
197         * 使用json_decode()函数进行解析
198           json_decode($json,true)
199     * 响应格式为JSON
200       * 服务器端向客户端发送响应为JSON格式的数据
201         * 使用json_encode()函数将PHP变量(array)转换为符合JSON格式的字符串
202       * 客户端接收JSON格式的数据
203         * 使用XMLHttpRequest对象的responseText属性接收
204           * 没有responseJSON属性
205         * 使用eval()函数进行转换
206  
207 * HTML(文本格式)、XML格式、JSON格式的优缺点
208   * HTML
209     * 优点 - 简单
210     * 缺点 - 解析复杂
211   * XML
212     * 优点 - 易于构建复杂数据
213     * 缺点 - 构建、解析复杂
214   * JSON
215     * 优点 - 轻量级
216     * 缺点 - 可能转换失败
217 * 回顾
218   * DOM
219     * DOM的分类
220       * DOM CORE
221       * DOM HTML
222       * DOM XML
223       * DOM CSS
224     * DOM API
225       * 获取元素
226       * 创建元素
227       * 替换元素
228       * 删除元素
229       * 插入元素
230       * ...
231   * 
232 Day 03:
233   * jQuery中的Ajax
234     * 封装第一层 - 类似于原生Ajax的用法
235       * $.ajax() - 最复杂
236          * 选项 - 格式是{key:value}
237          *   * url - 请求地址
238          *   * type - 请求类型,默认get
239          *   * async - 是否异步,默认true
240          *   * Content-Type  - POST方式发送数据的前提
241                * 默认值为application/x-www-form-urlencoded
242          *   * data - 请求数据,格式必须为key:value
243          *   * success - 请求成功后的回调函数
244                * function(data,textStatus){}
245                  * data - 服务器端响应的数据内容
246                  * textStatus - 表示ajax请求的状态
247                    * success
248          *   * error - 请求失败后的回调函数
249                * function(XMLHttpRequest,textStatus,errorThrown){}
250                  * XMLHttpRequest - ajax的核心对象
251                  * textStatus - 表示ajax请求的状态
252                    * error、timeout、notmodified等
253                  * errorThrown - 错误异常
254              * dataType - 设置响应数据格式
255     * 封装第二层 - 基于第一层再次封装
256       * load()   - 最简单、局限性最大
257          * $().load(url,data,callback)
258          *  * url - 必要,设置当前Ajax请求的地址
259          *  * data - 可选,设置当前Ajax请求的数据
260               * 格式必须是key/value格式
261          *  * callback - 可先,当前Ajax请求成功后的回调函数
262               * 该回调参数的行参(data)就是服务器端响应的数据内容
263          *  * 问题
264               * 请求类型由是否发送请求数据决定
265                 * 没有请求数据时,请求类型是GET
266                 * 发送请求数据时,请求类似是POST
267               * 默认接收服务器端的数据内容
268                 * 是以字符串类型(HTML格式)进行接收
269                 * 无法使用XML或JSON格式
270             *
271          *
272       * $.get()  - 请求类型GET
273         * $.get(url,data,callback,type)
274              *  * url - 设置当前Ajax请求的地址
275              *  * data - 设置当前Ajax请求的数据
276                   * 格式要求为key:value,构建object
277                 * callback - 当前Ajax请求成功后的回调函数
278                 * type - 设置服务器端响应的数据格式
279                   * 默认值 - HTML格式
280                   * xml - XML格式
281                   * json - JSON格式
282              * 注意
283                * 无论是否发送请求数据,请求类型都是GET
284                * $.get()方法可以使用HTML格式、XML格式及json格式
285              *
286       * $.post() - 请求类型是POST
287         * 使用方式与$.get()方式一致
288     * 封装第三层 - 特殊用法
289       * $.getScript() - 动态读取脚步(JavaScript代码)
290         * $.getScript(url,callback)
291          * * url - 读取脚本的地址
292          * * callback - 读取成功后的回调函数
293              * function(data){}
294       * $.getJSON()   — 接收JSON格式数据
295     *
296   * 表单的ajax请求
297     * 表单的序列化
298          *  serialize() - 返回JSON字符串
299             * 使用表单元素的name属性
300             * {key:value}
301          *  seriaizeArray() - 返回JSON对象
302             * JSON对象是由一个对象数组组成的
303             * [ele1,ele2,ele3,...]
304       * 注意
305         * 表单中必须有name属性
306   * jQuery.form插件
307     * 作用 - 实现表单的异步提交
308     * 两个核心方法
309       * ajaxForm()方法
310       * ajaxSubmit()方法 - 使用ajax异步提交表单
311     * 底层机制
312      * 表单提交机制
313   * 表单异步提交的方式
314     * 不再使用submit按钮,而使用button按钮
315        通过button按钮绑定click事件,实现ajax异步提交
316        * 表单的序列化
317        * 表单的异步提交
318     * 依旧使用submit按钮
319       在<form>原素绑定onsubmit事件
320       在onsubmit的处理函数中
321         * 表单的序列化
322         * 表单的异步提交
323         * 阻止表单的默认行为(return false)
324  * 跨域请求 - $.getJson() 方法
325    * 跨域
326      * 完全跨域 - IP不同
327        * http://www.baidu.com
328        * http://www.tedu.coom
329      * 跨子域 - IP相同但端口号不同
330        * http://127.0.0.1:8000
331        * http://127.0.0.1:8888
332    * 域名
333      * 顶级域名
334        * http://baidu.com
335      * 二级域名
336        * http://wenku.baidu.com
337        * http://www.baidu.com/kongjian
338      * 
339    * 万维网协议
340      * 默认不允许跨域请求的
341    * 实现跨域
342        如何实现跨域请求
343            * 使用JSONP形式的回调函数来加载其他网域的JSON数据
344              * JSONP - JSON with Padding(JSON的一种使用模式)
345                * 核心内容 - HTML的<script //>元素具有开放策略
346            * 实现方式
347              * $.getJSON()方法的URL后增加请求数据
348               $.getJSON("09.php?callback=?",function(data){});
349  * Cookie
350    * 基本内容
351      * 浏览器的缓存
352        * 存储在浏览器内存中
353          * 关闭浏览器(窗口)后,数据会被自动销毁
354        * 存储在用户电脑硬盘中
355          * 关闭浏览器(窗口)后,数据不会销毁
356     * Cookie(小甜饼)
357       * 缓存文件 - 一些用户数据存储在此
358     * 问题
359       * 用户数据是以明码来存储的
360       * Cookie谁都可以读取
361       * A网站生成的Cookie文件,归属到百度
362   * 如何操作
363     * 读取Cookie
364     * 写入Cookie - 将
365 
366 Ajax PROJECT:
367  * Web开发工具
368   * webStorm软件
369     * webStorm如何创建PHP页面
370       注意:webStorm并不支持php
371       * 下载PHPstorm软件
372     * 配置php
373     * 点击工具栏"File"->"SetTing",弹出配置窗口
374     * 选择“Editor
375    
376   * Ajax案例 - 京东用户中心功能
377     * 订单查询 - (客户端|服务器端|数据库)
378     * 消费记录 - (canvas)
379     * 幸运抽奖 - (Canvas)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!