一、什么是AjaxAjax的全称是Asynchronous JavaScript and XML,即异步JavaScript+XML。二、Ajax技术的核心Ajax技术的核心是XMLHttpRequest对象(简称XHR),使得浏览器可以发出HTTP请求与接收HTTP响应。XMLHttpRequest对象的主要属性有:onreadystatechange——每次状态改变所触发事件的事件处理程序。responseText——从服务器进程返回数据的字符串形式。responseXML——从服务器进程返回的DOM兼容的文档数据对象。status——从服务器返回的数字代码,如404(未找到)和200(已就绪)。status Text——伴随状态码的字符串信息。readyState——对象状态值。三、XHR 用法创建Ajax核心对象XMLHttpRequest(记得考虑兼容性)向服务器发送请求注意:POST请求一定要设置请求头的格式内容对于open方法,有几点需要注意:URL是相对于当前页面的路径,也可以似乎用绝对路径。open方法不会向服务器发送真正请求,它相当于初始化请求并准备发送。只能向同一个域中使用相同协议和端口的URL发送请求,否则会因为安全原因报错。真正能够向服务器发送请求需要调用send方法,并仅在POST请求可以传入参数,不需要则发送null,在调用send方法之后请求被发往服务器。请求发往服务器,服务器根据请求生成响应(Response),传回给XHR对象,在收到响应后相应数据会填充到XHR对象的属性,有四个相关属性会被填充:responseText——从服务器进程返回数据的字符串形式。responseXML——从服务器进程返回的DOM兼容的文档数据对象。status——从服务器返回的数字代码,如404(未找到)和200(已就绪)。status Text——伴随状态码的字符串信息。Http状态码:1xx:指示信息–表示请求已接收,继续处理 2xx:成功–表示请求已被成功接收、理解、接受3xx:重定向–要完成请求必须进行更进一步的操作 4xx:客户端错误–请求有语法错误或请求无法实现5xx:服务器端错误–服务器未能实现合法的请求常见状态码:200 OK //客户端请求成功 400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在,eg:输入了错误的URL 500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常readyState——对象状态值。对象状态值有以下几个:0 - (未初始化)还没有调用send()方法1 - (载入)已调用send()方法,正在发送请求2 - (载入完成)send()方法执行完成3 - (交互)正在解析响应内容4 - (完成)响应内容解析完成,可以在客户端调用了在异步请求时,我们可以检查XHR对象的readyState属性,该属性表示请求/响应过程中的当前活动阶段,每当readyState值改变的时候都会触发一次onreadystatechange事件。我们可以利用这个事件检查每次readyState变化的值,当为4的时候表示所有数据准备就绪。有一点我们需要注意:必须在open方法之前指定onreadtstatechange事件处理程序。四、GET还是POST?与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。然而,在以下情况中,请使用 POST 请求:无法使用缓存文件(更新服务器上的文件或数据库)向服务器发送大量数据(POST 没有数据量限制)发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠五、HTTP请求HTTP之请求消息Request客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。POST请求例子POST / HTTP1.1 Host: www.wrox.com User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Content-Type: application/x-www-form-urlencoded Content-Length: 40 Connection: Keep-Alive name=Professional%20Ajax&publisher=Wiley第一部分:请求行,第一行明了是post请求,以及http1.1版本。第二部分:请求头部,第二行至第六行。第三部分:空行,第七行的空行。第四部分:请求数据,第八行。HTTP之响应消息Response一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。例子HTTP/1.1 200 OK Date: Fri, 22 May 2009 06:07:21 GMT Content-Type: text/html; charset=UTF-8 <html> <head></head> <body> <!–body goes here–> </body> </html>第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)第二部分:消息报头,用来说明客户端要使用的一些附加信息第二行和第三行为消息报头,Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8第三部分:空行,消息报头后面的空行是必须的第四部分:响应正文,服务器返回给客户端的文本信息。空行后面的html部分为响应正文。