zoukankan      html  css  js  c++  java
  • Ajax总结

    1.什么是同步,什么是异步?

      同步:客户端发送请求到服务器,在服务器返回响应之前,客户端都是处于等待卡死状态。

      异步:客户端发送请求到服务器,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死。

    2.Ajax的原理

      页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到服务器端,在这段时间里,客户端可以做任意其他操作,直到服务器端将数据返回给Ajax引擎后,会触发你设置的事件,从而执行自定义的js逻辑代码,完成某种页面功能。

    一:js原生Ajax技术

          1.创建Ajax引擎对象

          2.为Ajax引擎对象绑定监听(监听服务器已将数据响应给引擎)

          3.绑定提交地址

          4.发送请求

          5.接收响应数据

      js原生Ajax技术-----get请求并带参数

    //原生ajax——get请求
            function fun1(){
                //1.创建ajax引擎对象
                var xmlHttp=new XMLHttpRequest();
                //2.绑定监听---监听服务器是否已经返回相应数据
                xmlHttp.onreadystatechange=function(){
                    if(xmlHttp.readyState==4&&xmlHttp.status==200){
                        //5.接收服务器返回数据
                        var res=xmlHttp.responseText;
                        alert(res)
                    }
                }
                //3.绑定请求地址     true:表示异步
                xmlHttp.open("GET", "${pageContext.request.contextPath}/ajaxDemo1?age=20",true);
                //4.发送请求
                xmlHttp.send();
            }

      js原生Ajax技术-----post请求并带参数

    //原生ajax——post请求
            function fun2(){
                //1.创建ajax引擎对象
                var xmlHttp=new XMLHttpRequest();
                //2.绑定监听---监听服务器是否已经返回相应数据
                xmlHttp.onreadystatechange=function(){
                    if(xmlHttp.readyState==4&&xmlHttp.status==200){
                        //5.接收服务器返回数据
                        var res=xmlHttp.responseText;
                        alert(res)
                    }
                }
                //3.绑定请求地址     true:表示异步
                xmlHttp.open("POST", "${pageContext.request.contextPath}/ajaxDemo1",true);
                
                xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
                
                //4.发送请求
                xmlHttp.send("age=20");
            }

      原生ajax的get与post请求格式的不同:

        1.post请求需要在发送前设置 头 :xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")

        2.参数不再拼接在请求地址后,而是写在 :   xmlHttp.send( );

    ***************************************************************************************************************************************************************************

    二:JQuery的Ajax技术,常用的有3种

      1.get方式

        $.get(url,[data],[callback],[type])

          url:代表请求的服务器端地址

          data:代表请求服务器端的数据,可以是key=value形式,也可以是json格式

          callback:表示服务器端成功响应所触发的函数(只有正常成功返回才执行)

          type:表示服务器端返回的数据类型(jquery会根据指定类型自动转换),常用的返回类型:text,json,html等

        function fun1() {
                $.get(
                    "${pageContext.request.contextPath}/jQueryAjax",//请求地址
                     {"name":"zhangsan","age":20},                    //请求参数(此处指定为json)
                     function(responseData) {                        //请求成功后的回调函数     responseData:服务器返回的数据
                        alert(responseData.msg);
                     },
                     "json"                                            //指定服务器返回数据类型,jquery会根据指定类型自动转换
                );
            }
    public class JQueryAjax extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
            //转译   返回json类型数据
            response.getWriter().write("{"msg":"success"}");
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

     2.post方式(与get格式基本一致)

       $.post(url,[data],[callback],[type])

          url:代表请求的服务器端地址

          data:代表请求服务器端的数据,可以是key=value形式,也可以是json格式

          callback:表示服务器端成功响应所触发的函数(只有正常成功返回才执行)

          type:表示服务器端返回的数据类型(jquery会根据指定类型自动转换),常用的返回类型:text,json,html等

        function fun1() {
                $.post(
                    "${pageContext.request.contextPath}/jQueryAjax",//请求地址
                     {"name":"zhangsan","age":20},                    //请求参数(此处指定为json)
                     function(responseData) {                        //请求成功后的回调函数     responseData:服务器返回的数据
                        alert(responseData.msg);
                     },
                     "json"                                            //指定服务器返回数据类型,jquery会根据指定类型自动转换
                );
            }
    public class JQueryAjax extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
            //转译   返回json类型数据
            response.getWriter().write("{"msg":"success"}");
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

    JQuery的ajax的get与post基本没什么区别(地址栏同样不会显示请求参数),主要是提交时:get需要处理中文乱码,post不需要。

      3.ajax方法(最强大版)

        $.ajax({option:value,option:value.....});

        常用的option有如下:

          asyn:是否异步,默认是true,表示异步

          data:发送到服务器的参数,建议使用json格式

          dataType:服务器端返回的数据类型,常用text和json

          success:成功响应执行的函数,对应的数据类型是 function类型

          type:请求方式,post/get

          url:请求服务端地址

      

        function fun3(){
                $.ajax({
                    url:"${pageContext.request.contextPath}/jQueryAjax",
                    async:true,
                    data:{"name":"fansir","age":22},
                    type:"post",
                    success:function(responseData){
                        alert(responseData.msg);
                    },
                    dataType:"json",
                });
            }
    public class JQueryAjax extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
            //转译   返回json类型数据
            response.getWriter().write("{"msg":"success"}");
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }
  • 相关阅读:
    被学长教会的高斯消元法Gauss
    KMP字符串匹配算法翔解❤
    fkwの题目(祝松松生日快乐!)
    NOI-linux下VIM的个人常用配置
    从2017年暑假到现在手打的模板↑_↑
    【テンプレート】初级数据结构
    【テンプレート】高精
    DP(第二版)
    luogu P1029 最大公约数和最小公倍数问题
    贪心题整理
  • 原文地址:https://www.cnblogs.com/fansirHome/p/12549558.html
Copyright © 2011-2022 走看看