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)