Ajax从后台获取数据在前端显示(原生js与jQuery)

1、Ajax简介

Ajax(Asynchronous Javascript And XML)=异步的 javascript 和XML ,使网页在不重新加载整个页面的情况下,对页面的局部进行刷新,传统的网页(若不使用AJAX)在打开页面时,是需要加载出此页面所有的内容。Ajax是一种新的思想, 是与服务器交换数据并更新网页局部的艺术。

2、Ajax实现步骤js原生

  1. 使用JavaScript获取浏览器XMLHttpRequest内置对象,Ajax的核心。

    let xml=new XMLHttpRequest();
    
  2. 建立连接方式与请求内容:open()方法,有三个参数,第一个参数为请求方式,第二个参数为请求的路径,第三个参数为对请求是否为异步处理。

    xml.open("get","queryUserInfo",true);
    
  3. 设置事件句柄,回调函数

    xml.onreadystatechange=function(){
        /*
        	readyState ==0:request未初始化(调用open()之前)
        	readyState ==1:request已提出(调用send()之前)
        	readyState ==2:request已发送
        	readyState ==3:request正在处理中(服务器还未完成响应)
        	readyState ==4:判断request已完成(可以访问服务器)
        	status==200:判断request是否执行成功
        	status==404:表示“Not Found”
        */
        if(xml.readyState==4&&xml.status==200){
        }
    
  4. 发送数据

    xml.send(null);//以get方式提交,以post方式提交时,需要指定需要传送的参数
    

3、代码实现,js原生

前提,搭建maven项目,加载Tomcat,添加依赖。

在这里插入图片描述

  1. pom.xml,添加依赖,将依赖添加到dependencies当中

    <!--servlet依赖-->
    <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>4.0.1</version>
          <scope>provided</scope>
     </dependency>
    <!--json依赖-->
    <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.75</version>
    </dependency>
    
  2. user实体类

    package com.ajax.model;
    
    public class User {
        private  int userId;
        private String userName;
        private String userSex;
        private int userAge;
        private String userTel;
        private String userAddress;
    
        public int getUserId() {
            return userId;
        }
    
        public void setUserId(int userId) {
            this.userId = userId;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getUserSex() {
            return userSex;
        }
    
        public void setUserSex(String userSex) {
            this.userSex = userSex;
        }
    
        public int getUserAge() {
            return userAge;
        }
    
        public void setUserAge(int userAge) {
            this.userAge = userAge;
        }
    
        public String getUserTel() {
            return userTel;
        }
    
        public void setUserTel(String userTel) {
            this.userTel = userTel;
        }
    
        public String getUserAddress() {
            return userAddress;
        }
    
        public void setUserAddress(String userAddress) {
            this.userAddress = userAddress;
        }
    }
    
  3. servlet,查询所有user信息(queryUserInfo)

    package com.ajax.servlet;
    
    import com.ajax.model.User;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    
    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;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    
    @WebServlet("/queryUserInfo")
    public class QueryUserInfo extends HttpServlet {
        
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //设置数据的格式为json
            response.setContentType("json/application;charset=utf-8");
            List<User> list=new ArrayList<>();
            //添加user信息
            for(int i = 1;i < 10;i++){
                User user=new User();
                user.setUserId(100 + i);
                user.setUserName("张三"+i);
                user.setUserSex(i % 2 == 0 ? "男" : "女");
                user.setUserAge(18 + i);
                user.setUserTel("1809233094" + i);
                user.setUserAddress("西安");
                list.add(user);
            }
            //转为json数组
            JSONArray json =(JSONArray) JSONObject.toJSON(list);
            //响应给浏览器
            PrintWriter pw =response.getWriter();
            pw.print(json);
            System.out.println(json);
        }
        
    }
    
  4. index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>AjaxDemo</title>
    <!--    小图标-->
        <link rel="shortcut icon" href="img/fire.png" type="image/x-icon">
        <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css">
        <script src="bootstrap/js/bootstrap.js" type="text/javascript"></script>
        <!--导入jQuery包-->
        <script src="./js/jquery-3.5.1.min.js"></script>
        <script src="./js/show.js"></script>
        <style>
            .box{
                width: 80%;
                margin: 15vh auto;
            }
            table{
                text-align: center;
            }
            table th{
                text-align: center;
            }
        </style>
    </head>
    <body>
    <div class="box">
        <table class="table table-striped table-bordered table-hover table-condensed">
            <thead>
            <tr>
                <th>ID</th>
                <th>用户名</th>
                <th>性别</th>
                <th>年龄</th>
                <th>电话</th>
                <th>城市</th>
            </tr>
            </thead>
            <tbody id="userData">
            <!--存放数据-->
            </tbody>
        </table>
    </div>
    </body>
    </html>
    
  5. js原生,外部引用 show.js

    // 使用ajax动态获取表格数据
    window.onload = function (){
        //1创建XMLHttpRequest对象
         let xml=new XMLHttpRequest();
         //建立连接
        xml.open("get","queryUserInfo",true);
        //设置回调函数
        xml.onreadystatechange=function(){
            /*
            	readyState ==4:判断request已完成(可以访问服务器)
        		status==200:判断request是否执行成功
            */
            if(xml.readyState==4&&xml.status==200){
                //获取到响应数据
               let vals = xml.responseText;
                //控制台打印
               console.log(vals);
                //转为json格式
               let jsonArr=eval(vals);
                //tbody填入数据
               let temp = '';
                //获取tbody标签
               let tbody=document.getElementById("userData");
               for(let user of jsonArr){
                   temp +=
                        '<tr>' +
                        '<td>' + user.userId + '</td>' +
                        '<td>' + user.userName + '</td>' +
                        '<td>' + user.userSex + '</td>' +
                        '<td>' + user.userAge + '</td>' +
                        '<td>' + user.userTel + '</td>' +
                        '<td>' + user.userAddress + '</td>' +
                        '</tr>';
               }
               tbody.innerHTML = temp;
            }
        }
    
        //发送数据
       xml.send(null);
    
    }
    

4、jQuery实现

1)前言:jQuery入口函数的几种书写方式

  • $(document).ready(function () { alert(“测试1”); });
  • jQuery(document).ready(function () { alert(“测试2”); });
  • $(function () { alert(“测试3”); });
  • jQuery(function () { alert(“测试4”); });

2)jQuery经过封装,将ajax封装了,使用起来就比较简单了$.ajax()返回其创建的XMLHttpRequest对象。

常用参数

  • url : 请求地址
    type : 请求方式类型, 默认是"get", 常用的还有post
    dataType : 设置返回的数据格式,如html, xml, text, json
    data : 设置发送给服务器的数据
    success : 设置请求成功后的回调函数( 第二种方式用done )
    error : 设置请求失败后的回调函数, ( 第二种方式用fail )
  1. $.ajax()写法一

    $(document).ready(function (){
        //获取tbody
        let userData = $("#userData");
        let temp = '';
        $.ajax({
            //请求路径servlet
            url: "queryUserInfo",
            type: "get",
            dataType: "json",
            async: true,//是否异步
            //请求成功
            success: function (msg){
                let users = msg;
                userData.empty();//清空
                for (let i = 0; i < users.length; i++) {
                    temp +=
                        '<tr>' +
                        '<td>' + users[i].userId + '</td>' +
                        '<td>' + users[i].userName + '</td>' +
                        '<td>' + users[i].userSex + '</td>' +
                        '<td>' + users[i].userAge + '</td>' +
                        '<td>' + users[i].userTel + '</td>' +
                        '<td>' + users[i].userAddress + '</td>' +
                        '</tr>';
                }
                userData.append(temp);
            },
            //请求失败
            error: function (e) {
                alert("request failed !")
            }
        })
    });
    
  2. $.ajax()写法二

    jQuery(document).ready(function () {
        let userData = $("#userData");
        let temp = '';
        $.ajax({
            url: "queryUserInfo",
            type: "get",
            dataType: "json",
            async: true,//是否异步
        }).done(function (msg){
            console.log(JSON.stringify(msg))
            let users = msg;
            userData.empty();//清空
            for (let user of users) {
                temp +=
                    '<tr>' +
                    '<td>' + user.userId + '</td>' +
                    '<td>' + user.userName + '</td>' +
                    '<td>' + user.userSex + '</td>' +
                    '<td>' + user.userAge + '</td>' +
                    '<td>' + user.userTel + '</td>' +
                    '<td>' + user.userAddress + '</td>' +
                    '</tr>';
            }
            userData.append(temp);
        }).fail(function (e){
            alert("request failed !")
        })
    });
    
  3. $.post()写法:

    语法:$.post(url,data,callback,dataType)

    • url(必须):规定把请求发送到哪个 URL。
    • data(可选):发送给后台的数据,以key/value形式{a:value1,b:value2},即json格式
    • callback(可选):请求成功后的回调函数。
    • dataType(可选):规定预期的服务器响应的数据类型。默认执行智能判断(xml、json、script 或 html)
    $(function () {
        $.post("queryUserInfo",function (msg){
            console.log(JSON.stringify(msg))
            $('#userData').empty();
            let temp = '';
            for (let user of msg) {
                temp +=
                    '<tr>' +
                    '<td>' + user.userId + '</td>' +
                    '<td>' + user.userName + '</td>' +
                    '<td>' + user.userSex + '</td>' +
                    '<td>' + user.userAge + '</td>' +
                    '<td>' + user.userTel + '</td>' +
                    '<td>' + user.userAddress + '</td>' +
                    '</tr>';
            }
            $('#userData').append(temp);
        })
    })
    
  4. jQuery.get()与上面的$.post()写法相同,只是不一样的请求方式

    语法:$.get(URL,callback);

    区别:

    • GET - 从指定的资源请求数据
    • POST - 向指定的资源提交要处理的数据

    GET 基本上用于从服务器获得(取回)数据。注释:GET 方法可能返回缓存数据。

    POST 也可用于从服务器获取数据。不过,POST 方法不会缓存数据,并且常用于连同请求一起发送数据。

5、结果

在这里插入图片描述

  • 19
    点赞
  • 164
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: layui是一款基于jQuery前端UI框架,它不仅提供了丰富的UI组件,还提供了一些方便的工具函数和方法,其中就包括ajax请求后端数据的方法。 在使用layui实现ajax请求获取后端数据展示前端的过程中,我们需要遵循以下步骤: 1. 引入layui的相关资源文件: 在HTML页面中引入layui的资源文件,包括layui.js和相关的CSS文件,确保可以正确使用layui的功能。 2. 使用layui的ajax方法发送请求: 通过layui的ajax方法发送GET或POST请求,向后端发送数据请求。可以指定请求的URL、请求的类型、请求的数据等参数。例如: layui.$.ajax({ url: '后端接口地址', type: 'GET', // 或 'POST' data: { 参数名1: 参数值1, 参数名2: 参数值2 }, success: function(res){ // 请求成功的回调函数 // res为后端返回的数据 }, error: function(){ // 请求失败的回调函数 } }); 3. 处理后端返回的数据: 在请求成功的回调函数中,可以对后端返回的数据进行处理。可以使用layui的组件或自定义的方法将数据展示前端页面上。例如: layui.use(['table'], function(){ var table = layui.table; // 渲染表格组件,并将后端返回的数据填充到表格中 table.render({ elem: '#tableId', // 表格元素的ID data: res.data, // 后端返回的数据 cols: [[ {field: '字段名1', title: '标题1'}, {field: '字段名2', title: '标题2'}, // ... ]] }); }); 通过上述步骤,我们可以使用layui的ajax方法从后端获取数据,并将数据展示前端页面上。当然,在实际应用中,我们需要根据具体需求,对请求和展示的逻辑进行进一步的处理。 ### 回答2: 在前端使用Layui和Ajax获取后端数据展示,可以按照以下步骤操作: 1. 首先,在HTML页面中引入Layui的相关样式表和脚本文件,确保页面正常加载Layui的效果。 2. 在HTML页面中创建一个容器,用于展示后端数据。可以使用Layui的表格组件或其他适合的组件,具体根据后端返回的数据类型和显示需求来确定。 3. 使用Ajax后端发送请求,获取数据。可以使用Layui的Ajax方法`$.ajax()`来发送GET或POST请求,其中包括请求的URL、请求的数据等参数。 4. 在Ajax的回调函数中,处理后端返回的数据展示在页面中。根据后端返回的数据类型,可以使用Layui的表格组件的方法(如`table.render()`)来渲染表格,并将数据填充到表格中,或者直接使用页面操作DOM的方式来展示数据。 5. 根据需求,可以对数据进行排序、筛选、分页等操作,Layui提供了相应的组件和方法,可以根据实际情况进行调整。 6. 最后,根据需要可以添加其他交互效果,如点击事件、弹窗等,以提升用户体验。 需要注意的是,获取后端数据展示前端是一个异步的过程,所以在Ajax请求的过程中,页面上可能需要显示一些加载中的提示,以避免用户的不良体验。 以上就是使用Layui和Ajax获取后端数据展示前端的基本步骤。具体的操作根据实际情况会有所不同,可能需要根据项目需求进行一些定制化的开发。 ### 回答3: 要在前端展示后端数据,可以借助layui框架的ajax功能。 首先,在前端页面中引入layui库,并定义一个div容器,用于展示后端数据。 然后,使用layui的ajax方法发送请求,获取后端数据ajax方法需要配置接口地址、请求类型和回调函数等参数。 在回调函数中,可以获取到从后端返回的数据。可以使用layui的laytpl模板引擎,将数据和HTML模板结合,渲染出需要展示的内容。 具体操作步骤如下: 1. 在页面中引入layui库和相关样式: ``` <link rel="stylesheet" href="layui/css/layui.css"> <script src="layui/layui.all.js"></script> ``` 2. 在HTML页面中定义一个展示后端数据的容器: ``` <div id="container"></div> ``` 3. 使用layui的ajax方法发送请求并获取后端数据: ``` layui.use('jquery', function(){ var $ = layui.$; $.ajax({ url: '后端接口地址', type: 'GET', success: function(data){ // 后端返回的数据将存储在data中 // 在这里使用laytpl模板引擎渲染数据 var tpl = $('#template').html(); // 获取HTML模板的内容 var render = layui.laytpl(tpl); // 初始化laytpl模板 var html = render.render(data); // 渲染数据 $('#container').html(html); // 将渲染好的内容显示在容器中 }, error: function(){ // 处理错误情况 } }); }); ``` 4. 在页面中定义与数据对应的HTML模板: ``` <script type="text/html" id="template"> {{# layui.each(d, function(index, item){ }} <div>{{ item.name }}</div> {{# }); }} </script> ``` 以上就是如何使用layui的ajax方法获取后端数据并在前端展示的方法。请根据实际情况修改代码中的接口地址和数据渲染逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叁Mar.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值