• 异步请求


    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>
      
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    反射
    java 验证码识别
    Spring boot + mybatis + orcale
    JVM内存模型及垃圾回收的研究总结
    Java的Array和ArrayList
    Java中最常见的十道面试题
    session和cookie
    Hibernate的load()和get()区别
    ajax跨域获取网站json数据
    对于Spring的IOc和DI的理解
  • 原文地址:https://www.cnblogs.com/nin-w/p/5789751.html
Copyright © 2020-2023  润新知