天天@BLOG

脖子越来越疼,脑袋越来越钝
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Ajax学习日记(一)

Posted on 2006-10-27 09:42  天天在线  阅读(301)  评论(0编辑  收藏  举报

这些天正好有时间自己看看书,写写这些天的看书心得吧。
HTTP基础
   想要了解Ajax技术首先得了解HTTP协议(超文本传输协议),它是用来传输网页、图像以及因特网上在浏览器与服务器间传输的其它类型文件,像XML。
   HTTP由两部分组成:请求和响应。
   HTTP请求
   请求的格式如下所示:
 <request-line>
<headers>
<blank line>
[<request-body>]
   使用XMLHttp,在创建XMLHttp对象后,就可以在JavaScript中发出HTTP请求了。第一步是调用OPEN方法来初始化该对象,接着对该对象定义一个onreadystatechange事件处理函数。当XMLHttp对象的readyState属性发生改变时就是触发该事件。readyState共有5种可能取到的值。
0(uninitialized,未初始化):对象已经创建,但还没有调用open()方法;
1(loading,载入中):open()方法已经调用,但请求还没有发送;
2(loaded,已载入):请求已经发送;
3(interactive,交互中):已经接收到部分响应;
4(complete,完成):所有数据都已经收到,连接已经关闭。
当readyState的值为4时,也就是HTTP请求服务器已经收到。最后一步是调用send()方法,用来完成请求的发送。
写一个简单的示例:
var oXmlHttp = zXmlHttp.createRequest();//创建XMLHttp对象,zXmlHttp.createRequest()是类里封装的一个方法,它能够创建浏览器兼容的XMLHttp对象
oXmlHttp.open("get","test.php",true);
oXmlHttp.onreadystatechange = function() {
   if(oXmlHttp.readyState==4) {
      alert("get response");
   }
};
oXmlHttp.send(null);
以上就是一个使用XmlHttp完成的HTTP请求。它能获取请求的状态。

   HTTP响应
   响应的格式如下所示:
<status-line>
<headers>
<blank line>
[<response-body>]
   对比请求和响应的格式,你会发现在响应中唯一真正的区别是第一行用状态信息代替了请求信息。状态行给出的HTTP状态代码,常用的有以下几种:
200(OK):找到了该资源,并且一切正常;
304(NOT MODIFIED):该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制;
401(UNAUTHORIZED):客户端无权访问该资源。这通常会使得浏览器要求输入用户名和密码,以登录到服务器;
403(FORBIDDEN):客户端未能获得授权。这通常是在401之后输入了不正确的用户名和密码;
404(NOT FOUND):在指定的位置不存在所申请的资源。(这估计是我们碰到最多的问题)
   我们在使用XMLHttp对象时,它同样有一个属性status来表示当前HTTP的响应。
   if(oXmlHttp.status==200) {
      alert("data return");
   }
   如果想得到返回的数据,XMLHttp对象同样有一个属性值responseText或responseXML。responseText属性返回一个包含响应主体的字符串,而responseXML属性则返回一个XML文档对象,它仅当返回的内容类型为text/xml时才使用。

至此,我们了解到关于HTTP的请求和响应,可以通过XMLHttp来实现。

@忙碌,不代表有效率;方法,远胜于苦干