根据W3C总结Ajax基础技术

1、  AJAX是一种用于创建快速动态网页的技术,通过后台 与服务器进行少量的数据交换,AJAX可以实现网页的异步更新,这意味着可以再补充新加载整个网页的情况下,对网页的某部分进行更新。

2、  XMLHttpRequest是AJAX的基础,所有的浏览器均支持XMLHttpRequest对象(IE5和IE6使用ActiveXObject)。

 1 var xmlhttp=false;
 2 try
 3 {
 4   if (window.XMLHttpRequest)
 5   {// code for IE7+, Firefox, Chrome, Opera, Safari
 6        xmlhttp=new XMLHttpRequest();
 7   }
 8 else
 9     {// code for IE6, IE5
10     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
11     }
12 }
13 catch(err)
14 {
15     xmlhttp=false
16 }
17 if(!xmlhttp)
18 {
19    alert(“XMLHttpRequest在初始化的过程中出现错误!”);
20 }

发送请求:

 1   var phone = document.getElementById("phone").value;
 2  var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);
 3  xmlhttp.open("GET", url, true);
 4   xmlhttp.onreadystatechange=updatePage;
 5  xmlhttp.send(null);
 6   function updatePage()
 7 {
 8     if (xmlhttp.readyState==4 && xmlhttp.status==200)
//readyState==4表示响应已经完成,可以访问服务器的数据,http的状态status==200是为了防止服务器响应请求并完成了处理但是报告了一个错误,200表示一切顺利。 9 { 10 11 } 12 }

3、静态的javascript(不写在函数或方法体重javascript脚本)是指把代码直接写在<script>标记中,就是说代码是在页面显示给用户的某个时候运行的,ajax一般写成静态的,这样可以提前验证浏览器是否支持,而不是等用户输入了一半的时候显示浏览器不支持。

4、 XMLHttpRequest唯一的目的就是发送请求和接受响应。

5、 escape() 方法,它用于转义不能用明文正确发送的任何字符。比如,电话号码中的空格将被转换成字符 %20,从而能够在 URL 中传递这些字符。

6、Ajax采用一种沙箱的安全模型(就是不能跨域调用脚本),ajax代码只能对所在的同一个域发送请求。

7、为了避免请求中的缓存,可以采用:

xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);

xmlhttp.send();

如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:

setRequestHeader(header,value); header: 规定头的名称, value: 规定头的值

8、  AJAX服务器的响应,获取服务器的响应使用的是XMLHttpRequest对象的几个属性:

ResponseText获得字符串形式的响应数据,responseXML获得XML形式的响应数据,document.getElementByID(“myDiv”).innerHTML=xmlhttp.responseText;

获取XML数据,然后进行XML的处理;

xmlDoc=xmlhttp.responseXML;

txt="";

x=xmlDoc.getElementsByTagName("ARTIST");

for (i=0;i<x.length;i++)

  {

  txt=txt + x[i].childNodes[0].nodeValue + "<br />";

  }

document.getElementById("myDiv").innerHTML=txt;

9、  AJAX的onreadystatechange事件,当请求被发送到服务器时,我们需要执行一些响应的任务,每当readyState改变时,就会触发onreadystatechange事件,readyState属性存放的是XMLHttpRequest的状态信息。

Onreadystatechange存储函数,每当readyState属性改变时,就会调用该函数;

readyState存有XMLHttpRequest的状态。从0~4发生变化

0:请求为初始化 1服务器已将建立连接2请求已经连接3请求处理中4请求已完成,且响应已就绪;

Status:200“ok”

404:未找到页面

*****在onreadychange事件中,我们规定当服务器响应已做好被处理的准备是多执行的任务。当readyState等于4且状态为200时表示响应一就绪;

xmlhttp.onreadystatechange=function()

  {

  if (xmlhttp.readyState==4 && xmlhttp.status==200)

    {

    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

    }

  }

10、  CallBack函数是一种以参数的形式传递给另一个函数函数;如果您的网站上存在多个 AJAX 任务,那么您应该为创建 XMLHttpRequest 对象编写一个标准的函数,并为每个 AJAX 任务调用该函数。

该函数调用应该包含 URL 以及发生 onreadystatechange 事件时执行的任务(每次调用可能不尽相同):

function myFunction()

{

loadXMLDoc("ajax_info.txt",function()

  {

  if (xmlhttp.readyState==4 && xmlhttp.status==200)

    {

    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

    }

  });

}

posted @ 2012-04-16 10:37  学之乐  阅读(467)  评论(0编辑  收藏  举报