Tu producto, tu producto AJAX


Inserte la descripción de la imagen aquí

Este artículo es un resumen de la introducción simple cuando aprendí de forma autodidacta el front-end. Si hay errores y mejores comentarios, doy la bienvenida al hermano mayor para que lo presente.

Mapa mental:Inserte la descripción de la imagen aquí

Resumen

ASynchronous JavaScript y XML Asynchronous JavaScript y Xml AjaxLa tecnología para poder actualizar algunas páginas web sin volver a cargar toda la página web

Asincrónico y sincrónico

Sincronización: el cliente debe esperar una respuesta del servidor. Durante el período de espera, el cliente no puede realizar otras operaciones
Asíncrono: el cliente no necesita esperar la respuesta del servidor. En el proceso de procesamiento de solicitudes del servidor, se pueden realizar otras operaciones en el cliente
Inserte la descripción de la imagen aquí
para comprender mejor la diferencia entre asíncrono y sincrónico:

就是比如在搜索框里搜索东西时会有推荐信息,那个就是异步,只是将需要的东西获取(局部刷新),而不是刷新整个页面。

Implementación nativa de JS


      //1.创建核心对象
              var xmlhttp;
              if (window.XMLHttpRequest)
              {// code for IE7+, Firefox, Chrome, Opera, Safari
                  xmlhttp=new XMLHttpRequest();
              }
              else
              {// code for IE6, IE5
                  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
              }
  
              //2. 建立连接
              /*
                  参数:
                      1. 请求方式:GET、POST
                          * get方式,请求参数在URL后边拼接。send方法为空参
                          * post方式,请求参数在send方法中定义
                      2. 请求的URL:
                      3. 同步或异步请求:true(异步)或 false(同步)
  
               */
              xmlhttp.open("GET","ajaxServlet?username=tom",true);
  
              //3.发送请求
              xmlhttp.send();
  
              //4.接受并处理来自服务器的响应结果
              //获取方式 :xmlhttp.responseText
              //什么时候获取?当服务器响应成功后再获取
  
              //当xmlhttp对象的就绪状态改变时,触发事件onreadystatechange。
              xmlhttp.onreadystatechange=function()
              {
                  //判断readyState就绪状态是否为4,判断status响应状态码是否为200
                  if (xmlhttp.readyState==4 && xmlhttp.status==200)
                  {
                     //获取服务器的响应结果
                      var responseText = xmlhttp.responseText;
                      alert(responseText);
                  }
              }

caso uno: la página muestra la
página html hello + name :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //定义方法
        function  fun() {
            //发送异步请求
            //1.创建核心对象
            var xmlhttp;
            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }

            //2. 建立连接
            /*
                参数:
                    1. 请求方式:GET、POST
                        * get方式,请求参数在URL后边拼接。send方法为空参
                        * post方式,请求参数在send方法中定义
                    2. 请求的URL:
                    3. 同步或异步请求:true(异步)或 false(同步)

             */
            xmlhttp.open("GET","ajaxServlet?username=张振东",true);

            //3.发送请求
            xmlhttp.send();

            //4.接受并处理来自服务器的响应结果
            //获取方式 :xmlhttp.responseText
            //什么时候获取?当服务器响应成功后再获取

            //当xmlhttp对象的就绪状态改变时,触发事件onreadystatechange。
            xmlhttp.onreadystatechange=function()
            {
                //判断readyState就绪状态是否为4,判断status响应状态码是否为200
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    //获取服务器的响应结果
                    var responseText = xmlhttp.responseText;
                    alert(responseText);
                }
            }

        }
    </script>
</head>
<body>
<input type="button" value="发送请求" onclick="fun()">
<input type="input">
</body>
</html>

AjaxServlet :

package cn.itcast.web.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/ajaxServlet")
public class AjaxServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        //1.获取请求参数
        String username = request.getParameter("username");

       /* //处理业务逻辑。耗时
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }*/
        //2.打印username
        System.out.println(username);

        //3.响应
        response.getWriter().write("hello : " + username);


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

Resultado: si
Inserte la descripción de la imagen aquí
usa AJAX asíncrono, puede encontrar que al obtener el resultado, también puede ingresar algo en el cuadro de entrada, pero no puede hacerlo sincrónico.

Inserte la descripción de la imagen aquí

Implementación de JQuery

 1. $.ajax()
    * 语法:$.ajax({键值对});
     //使用$.ajax()发送异步请求
              $.ajax({
                  url:"ajaxServlet1111" , // 请求路径
                  type:"POST" , //请求方式
                  //data: "username=jack&age=23",//请求参数
                  data:{"username":"jack","age":23},
                  success:function (data) {
                      alert(data);
                  },//响应成功后的回调函数
                  error:function () {
                      alert("出错啦...")
                  },//表示如果请求响应出现错误,会执行的回调函数
  
                  dataType:"text"//设置接受到的响应数据的格式
              });
2. $.get():发送get请求
    * 语法:$.get(url, [data], [callback], [type])
     * 参数:
      * url:请求路径
      * data:请求参数
      * callback:回调函数
      * type:响应结果的类型
 3. $.post():发送post请求
    * 语法:$.post(url, [data], [callback], [type])
     * 参数:
      * url:请求路径
      * data:请求参数
      * callback:回调函数
      * type:响应结果的类型

$ .ajax

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
        
        //定义方法
        function  fun() {
            //使用$.ajax()发送异步请求

            $.ajax({
                url:"ajaxServlet",
                type:"POST" , //请求方式
                //data: "username=jack&age=23",//请求参数
                data:{"username":"jack","age":23},
                success:function (data) {
                    alert(data);
                },//响应成功后的回调函数
                error:function () {
                    alert("出错啦...")
                },//表示如果请求响应出现错误,会执行的回调函数

                dataType:"text"//设置接受到的响应数据的格式
            });
        }
        
    </script>
    
    
</head>
<body>

    <input type="button" value="发送异步请求" onclick="fun();">

    <input>
</body>
</html>

resultado:
Inserte la descripción de la imagen aquí

$ .get

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>

        //定义方法
        function fun() {

            $.get("ajaxServlet", {username: "rose"}, function (data) {
                alert(data);
            }, "text");

        }

    </script>


</head>
<body>

<input type="button" value="发送异步请求" onclick="fun();">

<input>
</body>
</html>

resultado:
Inserte la descripción de la imagen aquí

$ .post

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
        
        //定义方法
        function  fun() {

            $.post("ajaxServlet",{username:"rose"},function (data) {
                alert(data);
            },"text");

        }
        
    </script>
    
    
</head>
<body>

    <input type="button" value="发送异步请求" onclick="fun();">

    <input>
</body>
</html>

resultado:
Inserte la descripción de la imagen aquí
FIN !!! ¡El largo camino es largo, JAVA es tu compañero! ! !

42 artículos originales publicados · Me gustaron 142 · Visitantes más de 10,000

Supongo que te gusta

Origin blog.csdn.net/qq_43688587/article/details/105402098
Recomendado
Clasificación