什么是Ajax

西安分院:马扬睿

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

什么是Ajax

简单来说
就是没使用AJAX的网页,你点一个按钮就要刷新一下整个页面,尽管新页面上只有一行字和当前页面不一样,但你还是要无聊地等待页面刷新
用了AJAX之后,你点击,然后页面上的一行字就变化了,页面本身不用刷

AJAX只是一种技术,不是某种具体的东西。不同的浏览器有自己实现AJAX的组件

传统的网页想要更新内容或者提交一个表单,需要重新载入整个页面,而运用了ajax技术的网页 通过和后台进行少量的数据交换,网页就可以异步更新

如果有错误,继续发送请求,继续等待
如果有错误,服务器会把响应的结果发给页面,给你提示,在这个过程中你还可以继续进行,页面也不会被刷新,也不会有提交和等待

同步请求即是当前发出请求后,浏览器什么都不能做,必须得等到请求完成返回数据之后,才会执行后续的代码,相当于是排队,前一个人办理完自己的事务,下一个人才能接着办。也就是说,当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面处于一个假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面解除假死状态(即当ajax返回数据后,才执行后面的function2)

异步请求就当发出请求的同时,浏览器可以继续做任何事,Ajax发送请求并不会影响页面的加载与用户的操作,相当于是在两条线上,各走各的,互不影响。异步请求可以完全不影响用户的体验效果,无论请求的时间长或者短,用户都在专心的操作页面的其他内容,并不会有等待的感觉

2.知识剖析

Ajax


就是用 JS 发起一个请求,并得到服务器返回的内容。这跟以前的技术最大的不同点在于「页面没有刷新」,仅此而已

如何用JS发起一个请求

  • 创建一个对象 XMLHttpRequest(
  • 监听请求成功后的状态变化
  • 设置请求参数
  • 发起请求
  • 操作DOM,实现动态局部刷新

创建一个对象

var xhr = new XMLHttpRequest(); 为了支持ie6以及更早的版本,要 var xhr=new ActiveXObject()

什么是一个完整的HTTP请求呢?

1.建立TCP连接

2.web浏览器向服务器发送请求命令

3.web浏览器发送头信息

4.web服务器应答

5.web服务器发送应答头信息

6.web服务器向浏览器发送数据

7.web服务器关闭TCP连接

HTTP请求由四个部分组成

发送请求的方式,post,get,delete等

发送请求的地址,也就是url

请求头,包括客户端环境信息,身份验证信息

请求体,也就是请求正文,请求正文中可以包含客户提交的查询字符串信息,保单信息等等

监听请求成功后的状态变化

onreadystatechange:用来监听readyState的变化的

readyState:表示当前请求的后台的状态

status:表示处理的结果

readyState:表示当前请求的后台的状态

0:请求未初始化(还没有调用open())

1:请求已经建立,但是还没有发送(还没有调用send())

2:请求已经发送,正在处理中

3:请求正在处理中,通常响应中已经有部分数据可以用了

4:响应已经完成,可以获取并使用服务器的响应了

status:表示处理的结果(状态码)

1XX,表示收到请求正在处理中

status == 200 是表示处理的结果是OK的

状态码:200到300是指服务端正常返回

304:如果网页自请求者上次请求后再也没有更改过,应将服务器配置为返回此响应,进而节省带宽和开销

404:找不到对象(404 not found)

503:服务器超时

设置请求参数

xhr对象接受三个参数
1:表示请求类型
2:表示请求的网址
3:表示是否异步

get/post/put/delete

发起请求

get是获取数据,get的send方法的参数可以是null或者空,对发送信息有限制,一般在2000个字符,一般是用来查询(幂等)
post可以发送数据,但是在使用post方法发送数据,需要使用setRequestHeader()来添加HTTP头,同时,post的send()方法需要写入要发送的数据的值, 一般用于修改服务器上的资源,对信息数量无限制,也更安全

3、常见问题

Ajax的不足

使用post提交需要设置content-type的问题

4、解决方案

5、编码实战

6.扩展思考

7.参考文献

CSDN/知乎

8、更多讨论

鸣谢

感谢观看

BY ︱林健凡|马扬睿