什么是Ajax

深圳分院:林健凡

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

什么是Ajax

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

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

同步请求
异步请求

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

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

2.知识剖析

Ajax


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

如何用JS发起一个请求

  • 创建一个对象
  • 监听请求成功后的状态变化
  • 设置请求参数
  • 发起请求

创建一个对象

var xhr = new XMLHttpRequest();

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

onreadystatechange:用来监听readyState的变化的

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

status:表示处理的结果

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

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

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

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

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

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

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

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

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

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

404:找不到对象

503:服务器超时

设置请求参数

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

get/post/put/delete

发起请求

get是获取数据,get的send方法的参数可以是null或者空
post可以发送数据,但是在使用post方法发送数据,需要使用setRequestHeader()来添加HTTP头,同时,post的send()方法需要写入要发送的数据的值

3、常见问题

IE下的缓存问题

Ajax对象属性的大小写问题

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

4、解决方案

5、编码实战

6.扩展思考

7.参考文献

CSDN/知乎

8、更多讨论

鸣谢

感谢观看

BY ︱林健凡