超文本传输协议(http)规定web浏览器如何从web服务端获取文档和向web服务器提交表单内容,以及web服务器如何响应这些请求和提交。浏览器会处理这些http,通常http并不在脚本的控制下,只是当用户点击链接、提交表单和输入url时才发生。
而ajax描述的是使用脚本操纵http的web应用架构,其中的x表示的是XMLHttpRequest,浏览器在XMLHttpRequest类上定义了它们的HTTP API,通过XMLHttpRequest发送请求。
1. 使用这个HTTP API做的第一件事情就是实例化XMLHttpRequest对象:
var request = new XMLHttpRequest();
拓展:在IE7之前并没有这个XMLHttpRequest构造函数,而是个ActiveXObject对象。
2. 一个HTTP请求由四部分组成
- HTTP请求方法或者动作
- 正在请求的URL
- 请求头
- 请求主体
2.1. 在创建完XMLHttpRequest对象后,发起HTTP请求的下一步就是调用XMLHttpRequest对象的open()方法去指定这个请求的两个必需部分:方法和URL
request.open("GET","data.csv**");
第一个参数GET为HTTP方法或者动作,第二个参数为URL。
2.2. 如果有请求头的话,请求进程的下一个步骤就是设置它:
request.setRequestHeader("content-Type","text/plain");
一般MIME请求头的类型有:
-
text/hml:html格式
-
text/plain:纯文本格式
-
text/xml:XML格式
-
image/gif:gif图片格式
-
image/jpeg:jpg图片格式
-
image/png:png图片格式
-
application/xml:XML数据格式
-
application/json:json格式
-
application/octet-stream:二进制流数据
-
application/x-www-form-urlencoded:form表单数据以key/value格式发到服务器。
2.3. 使用XMLHttpRequest发起HTTP请求的最后一步就是选定可选的请求主体并向服务器发送它,使用send()方法:
request.send(null);
3. 服务器返回的HTTP响应包含3部分
- 一个数字和文字组成的状态码,用来显示请求的成功或者失败
- 一个响应头集合
- 响应主体
一个完整的HTTP响应应由状态码、响应头集合和响应主体组成,这些都可以通过XMLHttpRequest对象的属性和方法使用。
status和statusText属性以文字和文本的形式返回HTTP状态码,例如200表示请求成功,404表示url不能匹配服务器上的任何资源
使用getRequestHeaders()和getAllRequestHeaders()能查询响应头
响应主题可以从requestText属性中得到文本形式。
在响应过程中会有一个readystatechange事件,里面有readyState属性,UNSET(0,尚未调用)、OPENDED(1,已调用)、HEADERS—RECEIVED(2,接到头信息)、LOADING(3,接收到响应主体)、DONE(4,响应完成)