异步请求

1、什么是?
   原理性。
 
  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技术

 
1、什么是异步?
   Asynchronous:是不是一门语言,而是为了解决一个问题所出现的技术, 为了创建更好,更快,交互性更强的web应用。
 
2、异步和同步?
   进程
   线程同步:
             多个线程公用一个资源-----临界资源。
   解决出现的这种问题的技术------线程同步。
     int count=1; --k8554--5--14
     public void  maipiao(){
       if(count>0){
          //允许买-----程序在处理数据的时候,
                       需要时间1秒。
          count--;
        }
     }
   问题:为什么需要线程同步这个技术?
   线程异步:
       因为线程的异步性,导致了需要线程同步技术。
       两个人可以同步干一件事情,异步。
       异步:两个人都有权操作同一个资源。
   网页中的同步和异步:
       请求:用户请求----服务器---解析请求---查----把结果集转变成字节码--响应--浏览器解析,显示。---正在呈现:正在接收响应,--- 等待呈现:白屏
 
3、异步出现的意义?
   用户体验的角度:
     同步:当响应的呈现之前,页面的状态是白色,处于半呈现状态。第一个请求在没有响应结束之前,用户点击第二个。
     异步:2005年的时候,异步出名---google suggest 两个请求同步走,互不干涉。
           异步时空:注册--
     特点:局部刷新数据,同步异步请求,创建快速交互页面。
     总结:是一个实现交互性更强的技术实现了局部刷新数据的功能。
4、代码?
   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:判断注册的用户名,是否已经被使用了。使用了提示使用了,红色。否则:可以用。绿色。
 
4、注意点
   1、ajax也可以发送同步请求,实质上没有什么意义?
   2、在发送前就知道怎么回来,去哪里。谁发送,谁接受。
 
 
代码案例部分(注册界面):
 
 
< 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>
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/nin-w/p/5789751.html