异步请求

一、什么是?
   原理性。
 
  1.    $.ajax({               ----jQuery中封装好的异步请求
  2.       type:"post",
  3.       url:"add.do",
  4.       cache:"false",
  5.       dataType:"json",
  6.       success:function(msg){
  7.        //请求成功后执行的语句。
  8.          }
  9.     });
 
  没有封装的状况下的异步请求。
   ajax=异步(asynchronours) 的  javaScript and  xml
   本质: 异步请求不是语言,建立更好,更快以及交互性更强的web应用。
  实质就是javaScript技术

 
一、什么是异步?
   Asynchronous:是否是一门语言,而是为了解决一个问题所出现的技术, 为了建立更好,更快,交互性更强的web应用。
 
二、异步和同步?
   进程
   线程同步:
             多个线程公用一个资源-----临界资源。
   解决出现的这种问题的技术------线程同步。
     int count=1; --k8554--5--14
     public void  maipiao(){
       if(count>0){
          //容许买-----程序在处理数据的时候,
                       须要时间1秒。
          count--;
        }
     }
   问题:为何须要线程同步这个技术?
   线程异步:
       由于线程的异步性,致使了须要线程同步技术。
       两我的能够同步干一件事情,异步。
       异步:两我的都有权操做同一个资源。
   网页中的同步和异步:
       请求:用户请求----服务器---解析请求---查----把结果集转变成字节码--响应--浏览器解析,显示。---正在呈现:正在接收响应,--- 等待呈现:白屏
 
三、异步出现的意义?
   用户体验的角度:
     同步:当响应的呈现以前,页面的状态是白色,处于半呈现状态。第一个请求在没有响应结束以前,用户点击第二个。
     异步:2005年的时候,异步出名---google suggest 两个请求同步走,互不干涉。
           异步时空:注册--
     特色:局部刷新数据,同步异步请求,建立快速交互页面。
     总结:是一个实现交互性更强的技术实现了局部刷新数据的功能。
四、代码?
   XMLHttpRquest对象能够实现异步请求的发送。
   主流浏览器大部分都支持该对象。
   主流:IE,火狐,chrome,opera,safari。。。
             IE5,6---不支持该对象。
   IE5,6:ActiveXObjecct对象发送异步请求。
 
使用异步请求的步骤:
 
第一步:建立XMLHttpRequest  xhr引擎对象
     var xhr;
     if(window.XMLHttpRequest){
        xhr=new XMLHttpRequest();      //判断所使用的游览器
     }else{
        xhr=new ActiveXObject("Microsoft.XMLHTTP");       //IE浏览器使用的对象
     }
 
第二步:构建异步请求:
     url="add.do?user_id=1001&user_name=汤晓春" +Math.random();  //减小缓存 
     xhr.open("get/post",url,true/false);
     什么状况下用get,什么状况下用post
第三步:设置服务器处理返回结果方法。
     xhr.readyState(返回服务器响应用户的状态)
          0:请求未初始化,
          1:与服务器创建链接,
          2:接收开始,
          3:处理中,
          4:处理完毕。
     xhr.status==200/404
if(xhr.readyState==4&&xhr.status==200){
  //程序返回的结果
  xhr.responseText:response.getWrite().print("1");//获得String类型的返回值。
  xhr.responseXML:获得xml样式的返回值。须要特殊的方式解析。
   if(1){
 
   }else{
 
  }
}
第四步:发送请求
        xhr.send(String);String 用户post请求。
 
 
 
案例1:判断注册的用户名,是否已经被使用了。使用了提示使用了,红色。不然:能够用。绿色。
 
四、注意点
   一、ajax也能够发送同步请求,实质上没有什么意义?
   二、在发送前就知道怎么回来,去哪里。谁发送,谁接受。
 
 
代码案例部分(注册界面):
 
 
< script type= "text/javascript" >       var xhr;       function checked1() {             //建立异步引擎对象;             var username=document.getElementById("username" ).value;             if (window.XMLHttpRequest) {                 xhr = new XMLHttpRequest();            } else if (window.ActiveXObject) {                 xhr = new ActiveXObject( "Microsoft.XMLHTTP" );            }             //构建异步请求             var url = "vali.do?username=" + username;            xhr.open( "get", url, true);             //处理服务器返回结果方法            xhr.onreadystatechange = chuli;             //发送异步请求            xhr.send( null);      }       function chuli() {             if (xhr.status == 200 && xhr.readyState == 4) {                  var v = xhr.responseText;                  if (v == "0") {                      document.getElementById( "msg").innerHTML = ("该用户名可用" );                      document.getElementById( "msg").style.color = "green" ;                 } else if (v == "1") {                      document.getElementById( "msg").innerHTML = ("该用户名不可用" );                      document.getElementById( "msg").style.color = "red" ;                 }            }      } </ script> </ head> < body>       <input type = "text" id= "username" onkeyup= "checked1()" />       <span id = "msg"></ span>< br>       <input type = "submit"  value= "登陆"> </ body> </ html>
相关文章
相关标签/搜索