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);
    }
}

 

posted @ 2020-03-23 00:02  fansir万岁  阅读(156)  评论(0编辑  收藏  举报