欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ajax请求的四个步骤

程序员文章站 2022-04-28 21:36:17
ajax请求的四个步骤 什么是ajax: 异步javascript和xml。 无刷新读取数据。无需加载整个页面的情况下,刷新页面某一部分。 常用的地方:用户注册和聊天室。...

ajax请求的四个步骤

什么是ajax:

异步javascript和xml。
无刷新读取数据。无需加载整个页面的情况下,刷新页面某一部分。
常用的地方:用户注册和聊天室。

同步(sync): 发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。
 异步(async):异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。当这个调用完成后,一般通过状态、通知和回调来通知调用者。对于异步调用,调用的返回并不受调用者控制。

ajax请求的步骤

1.创建xmlhttprequest(创建异步对象)

不同使用的异步调用对象也有所不同,在ie浏览器中异步调用使用的是xmlhttp中的xmlhttprequest对象,而在firefox浏览器中则直接使用xmlhttprequest组件。

   var xmlhttp = null;
    if(window.xmlhttprequest){
        xmlhttp = new xmlhttprequest();//ie6及以下不兼容,针对主流浏览器
    }else{                             // 针对ie5, ie6
        xmlhttp = new activexobject("microsoft,xmlhttp");
    }

不同浏览器创建异步对象兼容处理

 function createxmlhttprequest(){
 3         var request = false;
 4         //一般先判断非ie浏览器
 5         //window对象中有xmlhttprequest存在就是非ie,包括(ie7,ie8)
 6         if(window.xmlhttprequest){
 7             request=new xmlhttprequest();//非ie以及ie7,ie8浏览器
 8             if(request.overridemimetype){
 9                 request.overridemimetype("text/xml");//重置mime类型
10             }
11         //window对象中有activexobject属性存在就是ie浏览器的低版本
12     }else if(window.activexobject){
13         var versions = ['microsoft.xmlhttp',
14                     'msxml.xmlhttp',
15                     'msxml2.xmlhttp.7.0',
16                     'msxml2.xmlhttp.6.0',
17                     'msxml2.xmlhttp.5.0', 
18                     'msxml2.xmlhttp.4.0', 
19                     'msxml2.xmlhttp.3.0', 
20                     'msxml2.xmlhttp'];//各种ie浏览器创建ajax对象时传递的参数
21               for(var i=0; i2.连接服务器
 xmlhttp.open('get',url,true);  //xmlhttp.open(method,url,async)
 method 包含 get 和 post两种方法 

url主要是文件或资源的路径,async参数为true(代表异步)或者false(代表同步)

3.向服务器端发送请求

 xmlhttp.send();

4.接受服务器的返回

 xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readystate == 4){   //判断交互是否成功
            if(xmlhttp.status == 200){    //获取服务器返回的数据   获取纯文本数据
                //alert('成功:'+xmlhttp.responsetext);
            }else{
                //alert('失败');
            }
        }
}
;>