zoukankan      html  css  js  c++  java
  • ajax的简单理解

    0:同步和异步:
      1)同步就是“你”和“发送请求到响应完成这个过程”是同步的。
          你必须一同走完这个过程,之后才可以发起下一次请求。然后你和下一次的过程在一同走完,之后再请求下一次
      2)异步:就是“你”不用和“请求到响应这个过程”一起走完。当响应这个过程还没结束的时候,
           你可以再次发起请求。不用等着上次响应结束,------不用一起,不用同步。
      3)那么问题来了?同步,我们发起请求得到响应,就是得到了我们要的结果,然后在发送其他的请求...
                     异步,我们发起请求,在还没有得到结果时,又发送了下一次请求,那么上一次请求结果什么时候可以知道,
                     我们发送请求不就是为了得到响应结果么?
       4)可以这么理解:还是表单提交。当我们把表单内容全部写完,提交给服务器时,服务器会统一作出响应,
           表单的内容是否正确、表单的格式是否正确...等等。要有一项通不过,还得重新填,有没有一种方法可以把这个统一的响应分开呢?
           就是表单的内容做一个响应、表单的格式在坐一个响应、但是这种不是统一的响应必须是局部的,不能是全局的。
          人们想出一种方式:异步     
         那么怎么实现异步的呢?人们做出一个类XMLHttpRequest,这个类可以实现这个功能
     

    1:用到的地方:注册时提示错误信息、搜索时提示、百度地图扩大局部扩大不是重新刷新页面......
    2:作用:提高用户使用浏览器的舒适度。
    3:原理:使用异步实现客户端浏览器局部刷新。
      1:同步:
         两个个特点:1)只有服务器响应完之后才可以发起下一次请求,----------让客户一只等待不好
              2)响应后客户端浏览器重新刷新-------------------------像注册信息一样,一项注册失败,其他都白填
      2:异步:
        1)不用服务器产生响应信息客户端也可以发请求:---客户不用等了心情好
        2)可以实现局部刷新,不用刷新整个页面
    4:异步的具体实现方法:
       1):初始化XMLHttpRequest,得到对象xhr
       2):xhr.open();--建立和服务器的连接,有三个参数
           1:请求方式 get/post
           2:请求的URL,指定服务器端的资源
           3:请求是否为异步,true为异步,false为同步,第三个参数不写默认为异步
      
       3):xhr.send():发送请求,有一个参数
            如果是get请求:参数为null。get请求没有请球体,请求参数跟在URL后面
            如果是post请求:参数为请求参数。post请求参数单独打包。
       4):接收响应信息
            xhr.onreadystatechange();--发生状态变化时的事物控制,xhr的每一种状态都会调用这个方法
            xhr.readyState--请求的状态。有5种情况:-------------得到xhr的状态
           
            0:尚未初始化--------刚创建对象还没有调用open方法
            1:正在发送请求------调用open方法还没有调用send方法
            2:请求完成----------调用完成open方法了
            3:接收响应信息------服务器开始响应,但还没响应完成
            4:接收完成
           xhr.status---响应信息的状况
           200--表示请求成功
           202--请求被接收但处理没有完成
           400--错误的请求
           404--请求资源没有找到
           500--服务器内部错误
     
      在javascript中书写方法,方法的作用是向指定的servlet发起请求,并获取响应,将响应的内容
      输出在jsp页面内,两种情况:get和post请求;
      
      1:get请求
         1)创建XMLHttpRequest对象
         var xhr;
       function xmlht(){
        try{
           xhr=new XMLHttpRequest();
        }catch(){
         }try{
            xhr = new ActivXObject("Msxml2.XMLHTTP");
          }catch(){
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
           }
       }
        2)写一个方法用作发出请求和接受响应
            function xmlht1(){
               //初始化XMLHttpRequest
               xmlht();
               //建立链接
               xhr.open("GET","AServlet",true);
               //发送请求
               xhr.send(null);
               //接收响应数据
              xhr.onreadystatechange=function(){//接响应
              var id=document.getElementById("span");//获取html中的标签neme
              if(xhr.readyState==4&&xhr.status==200){//判断服务器是否响应完成
       id.innerHTML=xhr.responseText;//通过标签name获取值,并重新赋值为服务器                                                                                          
                                     //的响应信息,                              
                  }
              }
            }
        2:post请求:
             var xhr;
       function xmlht(){
        try{
           xhr=new XMLHttpRequest();
        }catch(){
         }try{
            xhr = new ActivXObject("Msxml2.XMLHTTP");
          }catch(){
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
           }
       }
        2)写一个方法用作发出请求和接受响应
            function xmlht1(){
               //初始化XMLHttpRequest
               xmlht();
               //建立链接
               xhr.open("POST","AServlet",true);
               xhr.setRequestHeader("Content-type", "application/x-www-form-                                                         urlencoded")//设置请求头
               //发送请求
               xhr.send("username="username);
               //接收响应数据
              xhr.onreadystatechange=function(){//接响应
              var id=document.getElementById("span");//获取html中的标签neme
              if(xhr.readyState==4&&xhr.status==200){//判断服务器是否响应完成
        id.innerHTML=xhr.responseText;//通过标签name获取值,并重新赋值为服务器                                            
                                       //的响应信息,
                  }
              }
            }
  • 相关阅读:
    keras环境搭建
    通过程序自动设置网卡的“internet共享”选项
    编译pjsip源码
    电商开发必备,淘宝商品和类目体系是如何设计的
    pom.xml成了普通xml文件
    springboot application.properties不生效
    SpringBoot进阶教程(七十二)整合Apollo
    SpringBoot进阶教程(七十一)详解Prometheus+Grafana
    SpringBoot进阶教程(七十)SkyWalking
    Java8 lamda表达式
  • 原文地址:https://www.cnblogs.com/xueershewang/p/6781882.html
Copyright © 2011-2022 走看看