Ajax(Asynchronous JavaScript and XML):翻译成中文就是异步的JavaScript和XML。
从功能上来看是一种在无需从新加载整个网页的状况下可以更新部分网页的技术。javascript
传统的网页
想要更新内容或者提交表单就要从新加载或刷新页面。php使用ajax技术的网页
经过后台服务器进行少许的数据交换,网页就能够实现异步局部跟新。java
Ajax技术出现以前,是一个同步交互的世界。
同步:客户端发出请求,服务端去处理,而后响应,这一段时间客户端是处在等待的状态,当服务端处理响应完成以后呢,客户端从新加载页面,若是中间信息错误那么客户端就会再次发起请求在此等待。ajax
Ajax出现以后世界变了 变成了异步的世界。
那咱们为何以前不使用异步呢,是由于以前少了一个对象XMLHttpRequest对象,在这个对象出现以前网页开发都是采用同步的方式,出现以后呢发现能够进行了异步的操做,这个对象是用于后台和服器之间进行数据交换,并且这个数据的交换不会从新加载整个页面,这种状况下呢实现了在不刷新页面的状况下对局部数据的更新,有了这个对象以后呢才有了Ajax的异步加载局部刷新。浏览器
var request = new XMLHttpRquest();
注意:如今大部分的浏览器都支持XMLHttpRequest对象和new这种方式,可是呢在IE6及如下版本的时代中呢XHR还只是ActiveXObject安全
解决方法:
服务器
Var request;
If(window.XMLHttpRequest){
Reuest = new XMLHttpRequest();
}else{
Request = new ActiveXObject(“Microsoft.XMLHTTP”);
}
在这以前咱们来看一下什么事HTTP请求 是一种计算机经过网络进行通信的规则。 是一种无状态协议,不保留链接的相关信息, 客户端向服务器发出请求,服务器响应,以后呢链接就被关闭
一个完整的HTTP请求有七个步骤网络
A.创建TCP链接 B.客户端向服务器发送请求的命令 C.浏览器发送请求头信息 D.服务器给出响应 E.服务器发送应答头信息 F.服务器向浏览器发送数据 G.服务器关闭TCP链接
分开来看:HTTP请求分为四个部分app
HTTP请求的方法和动做(get,pos) 正在请求的URL(请求地址) 请求头(包含客户端环境信息,身份验证信息等) 请求体,请求正文。
Get请求:通常用于信息获取(http默认求求方式)异步
Url传参属性和值都是可见的,对所发内容大小有限制 通常在2000个字符 get请求安全的说法是由于你请求一次和请求一万次效果是同样的不会对数据形成影响。
Post请求:通常用于服务器数据修改
对所发信息没有大小限制
1)一个数字和文字组成的状态吗,用来显示请求是成功仍是失败 2)响应头,和请求头信息同样包含不少信息,例如服务器类型,日期时间,内容类型和长度等 3)响应体,响应正文
HTTP响应状态吗由三位数字组成,首位数字定义了状态码的类型:
1xx:信息类,表示接收到浏览器请求,正在进一步处理 2xx:成功表示用户请求被正确接受 3xx:重定向,表示没有请求成功,客户必须采起进一步的动做 4xx:客户端错误,表示客户端请求有错误404NOTFound意味着请求中所引用的文档不存在 5xx:服务器错误,表示服务器不能完成对请求的处理
1.建立 var request = new XMLHttpRquest();
2.发送请求
两个方法: open(method,url,async),Send(string)这两种方法能够将请求发送到服务器 Request.open(get,get.php,true) Request.Send()
Request.open(post,post.PHP,true)
Request.Send()
Request.open(post,post.php,true)
Request.setRequestHeader(‘Content-Type’,’application/x-www-form-urlencoded’)
Request.send(“name=王二狗&sex=男”);
send()中的内容是要向后台传递的参数,在get请求是经过url传递参数,因此get中send()里面的内容能够省略,post方式中不能省略,省略了以后就是无心义的请求了
setRequestHeader是用来设置请求参数的类型,form
responseText:获取字符串形式的响应式数据 responseXML: Status和statusText:以数字和文本形式返回HTTP状态吗 getAllResponseHeader():获取全部的响应报头 getResponseHeader():查询相应中的某个字段的值 在响应返回成功时获得的通知,在实际操做中要监听 readyState属性的变化,他的变化表明着服务器相应的变化 0:表示服务器请求未初始化,open尚未被调用 1:服务器链接已经创建,open已经被调用 2:请求已经被接受,接收到头部信息 3:处理中,接收到相应主体 4:请求完成,而且响应完成 Var request=new XMLHttpRequest(); Request.open(get,url,true) Request.send(); request.onreadyState=function(){ If(request.readeyState===4&&request.Status===200){ 作一些事情 request.responseText } }