Ajax基础 同步请求与异步请求
xhr = new ActiveXObject("Microsoft.XMLHTTP");//对于其它IE版本请参看Demo代码
} else {
alert("cannot use Ajax");
}
创建该对象写出这么多代码的原因,就是在不同的浏览器下对该对象的实现方式不同。所以为了要适应多种浏览器的要求,通过如上代码来创建XHR对象。
微软的JS中,并没有内置的XHR对象,而是通过ActiveX控件实现的,所以的IE浏览器下创建XHR对象必须通过ActiveX方式实现。而其它浏览器中的JS库中有内置的JS XHR对象,所以可以直接创建出来。
2.发送请求
在发送请求前,我们需要创建如下的信息:
l 需要请求的URL地址(通过URL地址可以定位到服务器端的一个具体资源)
l 请求的类型,POST方式还是GET方式
l 传递给服务器端的参数
l 注册响应到达后的JS回调函数的名字
调用时使用的三种函数参数格式:
l open(http_method, url)
l open(http_method, url, asynchronous)
l open(http_method, url, asynchronous, userid, password)
说明:
第一个参数说明请求的方式,GET或者POST
第二个参数请求的服务器端资源的URL地址
第三个参数,采用异步方式还是同步方式发送请求(说明异步请求和同步请求的区别)
第四个参数,如果服务器端采用了HTTP身份认证方式,那么需要给出认证的用户名和密码
例如:
xhr.open(GET, servlets/ajax/getItem?id=321, true);
设置回调函数的名字:
xhr.onreadystatechange = parseResponse;
如果采用POST方式,那么提交给服务器的数据需要调用send方法来发送数据;如果是GET方式那么send方法给空字符串参数即可
xhr.send(id=321);
3.处理响应
将请求发送给服务器端后,服务器端的对应程序就会被执行;并将执行后结果返回给客户端,通过注册的处理响应的JS函数来处理响应数据。
在你处理响应的JS函数中,需要判断响应的状态。通过readyState来判断,readyState的状态说明见附表。
在处理响应的方法中:
xhr.onreadystatechange = function(){
var ready = xhr.readyState;
if (ready == 4){
parseCompletedResponse(xhr);
}
};
在status中含有响应的状态码,通过响应的状态码可以获得响应的状态。如200表示响应正常、404表示资源未找到、500表示服务器端程序有错误
xhr.onreadystatechange = function(){
var ready = xhr.readyState;
if (ready == 4) {
var status = xhr.status;
if (status = 200 status 300) {
parseCompletedResponse(xhr);
} else {
parseErroredResponse(xhr);
}
}
};
响应提供了两个对象:responseText和responseXML。分别用来获取不同文本格式的响应和XML格式的响应。
其它的一些响应中的方法:
abort():放弃请求。即使请求已经被发送,服务器端已经产生响应,也会忽略响应的结果,而且结束处理。
setRequestHeader(header,value):设置请求的头部信息。例如:
xhr.setRequestHeader(
Content-type,
application/x-www-form-urlencoded
);
客户端发送XML格式数据到服务器端的时候,需要对文档的编码进行设置。
xhr.setRequestHeader(
Content-type,
application/xml; charset=UTF-8
);
xhr.send(" data source=ajax in practice hello world /data
getResponseHeader(header)和getAllResponseHeaders()方法:用来获取响应的头部信息。getAllResponseHeaders将取回所有响应的头部的名字。getResponseHeader方法将根据头部的key值取出value值。
if (xhr.getResponseHeader("Server")
.indexOf("Microsoft-IIS") != -1 ) {
alert("The server is a Microsoft IIS server.");
}
第106天:Ajax中同步请求和异步请求 同步请求和异步请求的区别 1、同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的。信息错误又要重新填写! 2、异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
JQuery中使用Ajax实现诸如登录名检测等异步请求Demo 上一篇博客介绍了注册登录时一次性图形验证码的工具类的编写,这篇随笔同样是我在写用jquery中ajax实现登录信息检测的异步请求功能的笔记,在各个网站进行信息用户注册时,需要在不刷新页面的情况下对注册信息进行检测并实时返回信息,比如这种情况: 对于不需要访问数据库的页面验证比较简单,一旦需要访...
Ajax最为网页异步交互技术相信大家并不陌生,这里我也不做过多介绍,详情点击(百度百科)。很多框架也封装了Ajax技术,使用起来更加简单,比如jQuery等等,这里为了了解原理,我们使用原生的Ajax。
相关文章
- Java 多线程系列(8) —— 线程同步基础
- 张高兴的 .NET IoT 入门指南:(八)基于 GPS 的 NTP 时间同步服务器
- NTP时间同步服务器(网络时钟系统)架构设计与组成
- Linux基础:讲解Linux C++多线程同步的方式
- 快速同步MySQL:实现数据库同步(mysql同步设置)
- Linux文件自动同步:让您的信息同步更加便捷(linux文件自动同步)
- 利用Linux的时间同步功能,实现精准授时(linux授时)
- MSSQL数据库结构同步实现方案(mssql 结构同步)
- Redis加锁解决同步问题(用redis加锁)
- Oracle主键同步更新实现数据一致性(oracle主键同步更新)
- Oracle12实现实时数据同步的进步(oracle12实时同步)