关于web中ajax异步交互的学习

平时经常看到当我们在百度的时候,输入一些搜索信息,搜索栏下面就会出现一些与搜索有关的提示信息,这就是很典型的ajax异步交互,我们不用把搜索信息全写完成,然后点击百度一下,当我们输入搜索信息的时候页面就与服务器之间进行了数据的通信,在不刷新页面的情况下出现我们想要的信息,其中的原理便是页面与服务器之间通过ajax进行通信。

通常我们用ajax都是通过jQuery中的$.ajax(){

 type:"post/get",

url:"请求资源的url",

async:"是否异步通信",---默认不写情况下为true

data:"发送的数据",

dataType:"服务器返回的数据格式",----一般为json

success:function(){

 成功之后的回调函数 

},

error:function(jqXHR){

失败之后的操作

 }

}

这种形式完成页面与服务器之间的异步交互。

ajax异步交互的一个重要对象是XHLHttpRequest,简称XHR,这个名字可以在谷歌浏览器下的开发者模式中Network中看到


XHR最早是微软在IE中加入的,未经过jQuery封装的ajax,底层实现原理如下。

1.当我们需要与服务器进行异步交互时,新建XHR对象

现在一般的方式是if(window.XHLHttpRequest){

XMLHttpRequest xhr = new XMLHttpRequest();

}

不过为了严谨,在IE早期的时候并不是用的XMLHttpRequest对象,而是Active Object对象,可以通过以下方式获得

if(window.ActiveObject){

XMLHttpRequest xhr = new ActiveObject("Microsoft.XMLHTTP");

}

2.新建为XHR对象之后,调用XHR的open()方法就可以准备与服务器进行交互了

xhr.open(url,method,async);

open()方法包含三个参数,url是请求的服务器url,method为get,post,delete等,async是一个布尔值,为true时则表示允许ajax与服务器异步交互,为假时则不允许。

3.发送数据

xhr.send();

4.监控xhr对象的状态,通过检测xhr对象的状态来进行调用回调函数

xhr.onreadystatechange = callBack();

xhr对象状态有5种

0---xhr未初始化

1---xhr已经初始化,可以进行发送

2---xhr的数据已发送过去

3---正在接受服务器响应

4---接收响应完成

所以当xhr对象的状态为4时,则代表前台页面与服务器进行交互完成

function callBack(){

if(xhr.readyState == 4){

  if(xhr.status ==200){

        这里进行接收服务器响应的操作

  }

}

到此为止,ajax最原始的做法基本完成,不过现在大家都用jQuery封装好的了,如文章开头出所示。

猜你喜欢

转载自blog.csdn.net/dghkgjlh/article/details/80007979