layui进行分页处理,后端返回数据没有count字段,需要单独获取再添加到数据中,再进行项渲染,另有layui表格数据增删改查前后端交互

本文详细介绍了一个基于前后端分离的分页技术实现案例,涵盖了前端界面设计、后端数据处理及前后端交互流程。前端使用layui框架实现数据展示、分页、搜索等功能;后端采用Java处理分页请求,返回所需数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整体效果图如下:
在这里插入图片描述

(1)分页前端界面处理

在这里插入图片描述

(2)分页后端的数据处理
在这里插入图片描述

具体代码如下:
前端界面代码:包括分页,增删改查,刷新(搜索功能还没做,后端是java代码)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>Data-Table 表格</title>
    <link rel="stylesheet" href="../frame/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../frame/static/css/style.css">
    <link rel="icon" href="../frame/static/image/code.png">
    <!--//表单样式的修改-->
    <style>
        .layui-form-label{
            width: 100px;
        }
        .layui-input-block {
            margin-left: 130px;
            min-height: 36px
        }
    </style>
</head>

<body class="body">

<!-- 工具集 -->
<div class="my-btn-box">
    <span class="fl">
        <a class="layui-btn layui-btn-danger radius btn-delect" id="btn-delete-all">批量添加</a>
        <a class="layui-btn btn-add btn-default" id="btn-get">采集设备总数</a>
        <a class="layui-btn btn-add btn-default" id="btn-add">添加</a>
        <a class="layui-btn btn-add btn-default" id="btn-refresh"><i class="layui-icon">&#x1002;</i></a>
    </span>
    <span class="fr">
        <div class="demoTable">
            <span class="layui-form-label">搜索条件:</span>
            <!--// 搜索ID:-->
        <div class="layui-inline">
         <input class="layui-input" name="id" id="demoReload" autocomplete="off" placeholder="请输入搜索条件">
        </div>
        <button class="layui-btn" data-type="reload">查询</button>
        </div>
    </span>
</div>


<!--&lt;!&ndash; 表格 &ndash;&gt;-->
<script type="text/javascript" src="../frame/layui/layui.js"></script>
<script type="text/javascript" src="../js/index.js"></script>
<table class="layui-hide" id="test" lay-filter="test"></table>
<!-- 表格操作按钮集 -->
<script type="text/html" id="barOption">
    <a class="layui-btn layui-btn-mini" lay-event="detail">查看</a>
    <a class="layui-btn layui-btn-mini layui-btn-normal" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-mini layui-btn-danger" lay-event="del">删除</a>
</script>
<script>
    layui.use(['table', 'form', 'layer', 'vip_table'], function () {

// 操作对象
        var form = layui.form
            , table = layui.table
            , layer = layui.layer
            , vipTable = layui.vip_table
            , $ = layui.jquery
        var totals= $.ajax({
            url: "/getCollectorInfoTotalRow",
            type: "get",
            success: function (data) {
                var json=JSON.parse(data)
                return json.count
            }
        });

        table.renderBefore=function(res){ //修改res
            var counts=totals; //数据总量
            res.count = counts;
            return res; //此时的res就有count属性了
        }
        // 表格渲染
        var tableIns = table.render({
            elem: '#test'                  //指定原始表格元素选择器(推荐id选择器)
            , height: vipTable.getFullHeight()    //容器高度
            , toolbar: '#toolbarDemo'
            , title: '采集设备表'
            , cols: [[                  //标题栏
                {checkbox: true, sort: true, fixed: true, space: true}
                , {field: 'eqptType', title: 'eqptType', width: 150}
                , {field: 'eqptTypeName', title: 'eqptTypeName', width: 150}
                , {field: 'eqptIdCode', title: 'eqptIdCode', width: 150}
                , {field: 'eqptName', title: 'eqptName', width: 180}
                , {field: 'createTime', title: 'createTime', width: 200}
                , {field: 'creator', title: 'creator', width: 100}
                , {fixed: 'right', width: 178, align: 'center', toolbar: '#barOption', title: '操作'}
            ]]
            , id: 'dataCheck'
            // , url: '../json/decice_type.json'//本地数据
            ,url:'/getCollectorInfo'
            , page: true
             ,limit:15
            , limits: [ 15, 30, 40, 50]
            , loading: true
            , done: function (res) {
                console.log(res);
            }
        });
        //监听表格复选框选择
        table.on('checkbox(demo)', function (obj) {
            console.log(obj)
        });
        //监听工具条
        table.on('tool(test)', function (obj) {
            var data = obj.data;
            if (obj.event === 'detail') {
                layer.alert(JSON.stringify(data));
            } else if (obj.event === 'del') {
                layer.confirm('真的删除行么', function (index) {
                    $.ajax({
                        url: "/deleteCollector",
                        type: "POST",
                        data: {eqptType: data.eqptType, eqptIdCode: data.eqptIdCode},
                        success: function (msg) {
                            var json = JSON.parse(msg);
                            var returnCode = json.returnCode;
                            if (returnCode == 200) {
                                //删除这一行
                                obj.del();
                                //关闭弹框
                                layer.close(index);
                                layer.msg("删除成功", {icon: 6});
                            } else {
                                layer.msg("删除失败", {icon: 5});
                            }
                        }
                    });
                    return false;
                });
            } else if (obj.event === 'edit') {
                //formData = data;
                if (obj.event === 'del') {
                    layer.confirm('真的删除行么', function (index) {
                        obj.del();
                        layer.close(index);
                    });
                } else if (obj.event === 'edit') {

                    layer.open({
                        //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
                        type: 1,
                        title: "修改采集设备信息",
                        area: ['420px', '330px'],
                        content: $("#popUpdateTest")
                    });
                    setFormValue(obj,data);//动态向表单赋值
                }
            }
        });
        //监听弹出框表单提交
        function setFormValue(obj,data){
            form.on('submit(demo11)', function(massage) {
                $.ajax({
                    url:'/updateCollectorAndConfig',
                    type:'POST',
                    dataType:'json',
                    data:{
                        oldeqptType:data.eqptType,
                        oldeqptIdCode:data.eqptIdCode,
                        neweqptType:massage.field.neweqptType,
                        neweqptIdCode:massage.field.neweqptIdCode,
                        eqptName:massage.field.neweqptName
                    },
                    success:function (msg) {
                        var returnCode = msg.returnCode;
                        if(returnCode==200){
                            layer.closeAll('loading');
                            layer.load(2);
                            layer.msg("修改成功", {icon: 6});
                            setTimeout(function(){
                                obj.update({
                                    eqptType:massage.field.neweqptType,
                                    eqptIdCode:massage.field.neweqptIdCode,
                                    eqptName:massage.field.neweqptName
                                });//修改成功修改表格数据不会跳转到首页
                                layer.closeAll();
                            }, 1000);
                        }else{
                            layer.msg("修改失败", {icon: 5});
                        }
                    }
                })
                return false;
            })

        }



        //添加采集设备
        $('#btn-add').on('click', function () {
            layer.open({
                type: 2,
                title: '采集设备添加',
                maxmin: true,
                area: ['420px', '330px'],
                shadeClose: false, //点击遮罩关闭
                content: 'CollectorAdd-form.html',//下面是添加界面的代码
            });
        });


        //获取采集设备总数
        $('#btn-get').on('click', function () {
            var msg = "";
            $.ajax({
                url: "/getCollectorInfoTotalRow",
                type: "get",
                success: function (data) {
                    var json = JSON.parse(data)
                    msg = "采集设备的总数为:" + json.count;
                    layer.open({
                        type: 1,
                        area: ['250px', '180px'],
                        btn: '关闭',
                        shadeClose: true, //点击遮罩关闭
                        content: '<div style="padding:30px;">' + msg + '</div>'
                        , yes: function () {
                            layer.closeAll();
                        }
                    });
                }
            });

        });

        //搜索功能的实现
        $('.demoTable .layui-btn').on('click', function () {
            var type = $(this).data('type');
            active[type] ? active[type].call(this) : '';
        });

        var $ = layui.$, active = {
            reload: function () {
                var demoReload = $('#demoReload');

                //执行重载
                table.reload('idTest', {
                    where: {
                        key: {
                            field: demoReload.val()
                        }
                    }
                });
            }
        };
        $('.demoTable .layui-btn').on('click', function () {
            var type = $(this).data('type');
            active[type] ? active[type].call(this) : '';
        });

        // 刷新表格
        $('#btn-refresh').on('click', function () {
            tableIns.reload()
        });
    });
</script>

//这是修改弹出框的代码style="display:none是界面的隐藏,只有调用才会在界面显示
<div class="layui-row" id="popUpdateTest" style="display:none;">
    <div class="layui-col-md10">
        <form class="layui-form layui-from-pane" style="margin-top:20px" >
            <div class="layui-form-item">
                <label class="layui-form-label">采集设备类型</label>
                <div class="layui-input-block">
                    <select name="neweqptType" lay-filter="eqptType">
                        <option value="0a0003biac">0a0003biac</option>
                        <option value="0a0003ahup" selected="">0a0003ahup</option>
                    </select>
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">eqptIdCode</label>
                <div class="layui-input-block">
                    <input type="text" name="neweqptIdCode"  required  lay-verify="required" autocomplete="off" placeholder="请输入采集设备地址" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">eqptName</label>
                <div class="layui-input-block">
                    <input type="text" name="neweqptName"  required  lay-verify="required" autocomplete="off" placeholder="请输入采集设备名称" class="layui-input">
                </div>
            </div>

            <div class="layui-form-item" style="margin-top:40px">
                <div class="layui-input-block">
                    <button class="layui-btn  layui-btn-submit " lay-submit="" lay-filter="demo11">确认修改</button>
                    <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                </div>
            </div>
        </form>
    </div>
</div>
</body>
</html>

添加功能的界面和代码
在这里插入图片描述

添加界面代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>表单</title>
    <link rel="stylesheet" href="../frame/layui/css/layui.css">
    <link rel="stylesheet" href="../frame/static/css/style.css">
    <link rel="icon" href="../frame/static/image/code.png">
    <style>
        .layui-form-label{
            width: 100px;
        }
        .layui-input-block {
            margin-left: 130px;
            min-height: 36px
        }
    </style>
</head>
<body class="body">
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
    <legend>添加采集设备</legend>
</fieldset>

<form class="layui-form layui-from-pane" action="/addCollector" style="margin-top:20px" method="post">
    <div class="layui-form-item">
        <label class="layui-form-label">采集设备类型</label>
        <div class="layui-input-block">
            <select name="eqptType" lay-filter="eqptType">
                <option value="0a0003biac">0a0003biac</option>
                <option value="0a0003ahup" selected="">0a0003ahup</option>
            </select>
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">eqptIdCode</label>
        <div class="layui-input-block">
            <input type="text" name="eqptIdCode"  required  lay-verify="required" autocomplete="off" placeholder="请输入采集设备地址" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">eqptName</label>
        <div class="layui-input-block">
            <input type="text" name="eqptName"  required  lay-verify="required" autocomplete="off" placeholder="请输入采集设备名称" class="layui-input">
        </div>
    </div>

    <div class="layui-form-item" style="margin-top:40px">
        <div class="layui-input-block">
            <button class="layui-btn  layui-btn-submit " lay-submit="" lay-filter="demo1">立即提交</button>
            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        </div>
    </div>
</form>
<script src="../frame/layui/layui.js" charset="utf-8"></script>
<script>
    layui.use(['form','layer','jquery'], function(){
        var form = layui.form
                ,layer = layui.layer
                 ,$=layui.jquery,
                  table= layui.table
        //监听提交
        form.on('submit(demo1)', function(data){
            //layer.alert(JSON.stringify(data.field))
              //data=JSON.stringify(data.field)
            $.ajax({
                url:'/addCollector',
                type:'POST',
                dataType:'json',
               data:{eqptType:data.field.eqptType,eqptIdCode:data.field.eqptIdCode,eqptName:data.field.eqptName},
                success:function (msg) {
                    var returnCode=msg.returnCode;
                    if(returnCode==200){
                        layer.msg("添加成功", {icon: 6});
                        setTimeout(function(){
                           window.parent.location.reload();//添加成功后刷新父界面
                        }, 1000);
                    }else{
                        layer.msg("已经存在该设备,不支持重复添加", {icon: 5});
                    }
                }
            })
            return false;
        });
    });
</script>
</body>
</html>

后端的分页数据返回代码

  //获取采集设备总记录数
     String getCollectorInfoTotalRow="";
    @RequestMapping("/getCollectorInfoTotalRow")
    public  String getCollectorInfoTotalRow() throws Exception {
        String url = "/getCollectorInfoTotalRow";
        String equirments = equipmentService.getEquirement(url);
        JSONObject json = JSONObject.parseObject(equirments);
        getCollectorInfoTotalRow=json.get("count").toString();
        System.out.print(equirments);
        return equirments;
    }
    //获取采集设备信息
    @RequestMapping("getCollectorInfo")
    public  String getCollectorInfo(int page,int limit) throws Exception {
        String url = "/getCollectorInfo?page="+page+"&pageSize="+limit;
        String equirments = equipmentService.getEquirement(url);
        JSONObject json = JSONObject.parseObject(equirments);//将数据转化为json对象
        json.put("count",getCollectorInfoTotalRow);//把对象的count,进行赋值
        System.out.println(json.toString());
        return json.toString();
    }
返回的数据为:
//返回数据的总的记录数
{"msg":"200","code":0,"count":4}
//返回后台的数据不带count字段
{"returnCode":"200","data":[{"eqptIdCode":"075500005","eqptTypeName":"北电国网I型集中器","creator":"dyd","createTime":"2018-09-04 19:26:54","eqptName":"075500005","eqptType":"0a0003biac"},{"eqptIdCode":"075500006","eqptTypeName":"北电国网I型集中器","creator":"dyd","createTime":"2018-09-04 19:27:02","eqptName":"075500006","eqptType":"0a0003biac"},{"eqptIdCode":"000075500907","eqptTypeName":"北电以太网采集器","creator":"dyd","createTime":"2018-09-07 14:17:33","eqptName":"无锡展会zigbee网关","eqptType":"0a0003ahup"},{"eqptIdCode":"075500009","eqptTypeName":"北电国网I型集中器","creator":"dyd","createTime":"2018-09-10 13:51:21","eqptName":"水电集中器","eqptType":"0a0003biac"}]}

//经过处理后的字段,返回前端需要自动渲染的格式:
{"msg":"200","code":0,"data":[{"eqptIdCode":"075500005","eqptTypeName":"北电国网I型集中器","creator":"dyd","createTime":"2018-09-04 19:26:54","eqptName":"075500005","eqptType":"0a0003biac"},{"eqptIdCode":"075500006","eqptTypeName":"北电国网I型集中器","creator":"dyd","createTime":"2018-09-04 19:27:02","eqptName":"075500006","eqptType":"0a0003biac"},{"eqptIdCode":"000075500907","eqptTypeName":"北电以太网采集器","creator":"dyd","createTime":"2018-09-07 14:17:33","eqptName":"无锡展会zigbee网关","eqptType":"0a0003ahup"},{"eqptIdCode":"075500009","eqptTypeName":"北电国网I型集中器","creator":"dyd","createTime":"2018-09-10 13:51:21","eqptName":"水电集中器","eqptType":"0a0003biac"}],"count":"4"}

<think>好的,我现在需要帮用户解决如何使用Layui和jQuery发起请求获取数据渲染表格的问题。用户之前已经询问过关于Layui的table.render遇到401错误的情况,现在可能是在进一步学习Layui数据渲染流程。我需要确保回答清晰、步骤明确,并且覆盖用户可能需要的各个细节。 首先,用户提到了Layui和jQuery。虽然Layui本身有自己的模块系统,但用户可能希望结合使用jQuery来处理AJAX请求,然后再用Layui表格组件渲染数据。这可能是因为用户对jQuery更熟悉,或者需要更灵活的请求处理方式。 接下来,我需要分步骤解释如何用jQuery发起请求,获取数据后使用Layui渲染表格。首先,需要确保用户正确引入了Layui和jQuery的库文件,这是基础。然后,用户需要编写HTML结构,比如一个表格容器,这是Layui表格渲染的必要元素。 然后,使用jQuery的AJAX方法(如$.ajax或$.get)来获取数据。这里需要注意处理成功和失败的回调。成功获取数据后,需要将数据格式转换成Layui表格能识别的结构,比如code、data、count字段,或者通过parseData函数自定义解析。 接下来是调用Layui的table.render方法,配置elem、data等参数,将数据渲染表格中。同时,需要说明cols配置,定义表格的列与数据字段的对应关系。 可能还需要提到错误处理,比如网络问题或权限问题(如之前的401错误),这时候需要在AJAX的error回调中处理,给出提示信息。 另外,用户可能关心如何动态刷新表格数据,比如在数据更新后重新加载。这时候可以介绍table.reload方法,或者在AJAX成功回调中再次调用table.render。 还需要注意一些细节,比如确保DOM加载完成后再执行渲染,所以代码应放在$(document).ready或layui.use的回调中。同时,如果后端接口返回数据结构不符合Layui的默认要求,必须通过parseData进行适配。 最后,提供一个完整的示例代码,方便用户参考和复制,同时解释每个部分的作用,帮助用户理解实现过程。可能还需要对比纯Layui的请求方式和结合jQuery的方式,说明各自的优缺点,比如使用jQuery可以更灵活地处理请求,但需要手动处理数据解析和渲染。 总结来说,我需要从引入库、HTML结构、AJAX请求、数据处理表格渲染、错误处理、动态刷新等多个方面详细阐述,确保用户能够一步步实现需求,并理解其中的关键点。</think>以下是使用 Layui 结合 jQuery(或原生 AJAX)发起请求获取数据渲染表格的完整指南: --- ### 一、核心步骤 1. **引入依赖**:加载 Layui 和 jQuery 库。 2. **创建表格容器**:在 HTML 中定义表格占位元素。 3. **通过 AJAX 获取数据**:使用 jQuery 的 `$.ajax` 或 `$.get` 请求接口。 4. **数据格式处理**:将接口返回数据适配成 Layui 表格要求的格式。 5. **渲染表格**:使用 `table.render` 将数据渲染到页面。 --- ### 二、代码实现 #### 1. HTML 结构 ```html <!-- 依赖引入 --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <link href="https://www.layui.site/layui/css/layui.css" rel="stylesheet"> <script src="https://www.layui.site/layui/layui.js"></script> <!-- 表格容器 --> <table id="demo-table" lay-filter="demo"></table> ``` #### 2. JavaScript 逻辑 ```javascript layui.use(['table'], function() { const table = layui.table; // 通过 jQuery 发起请求获取数据 $.ajax({ url: 'http://api.example.com/data', method: 'GET', headers: { 'Authorization': 'Bearer ' + localStorage.getItem('token') }, success: function(res) { // 数据格式处理(适配 Layui 表格) const layuiFormatData = { code: 0, // 状态码必须为 0 表示成功 msg: '', // 可选提示信息 data: res.list, // 数据列表 count: res.total // 数据总数(分页需要) }; // 渲染表格 table.render({ elem: '#demo-table', // 绑定表格容器 data: layuiFormatData.data, // 直接传入数据(不动态加载时) cols: [[ // 定义表头 { field: 'id', title: 'ID', width: 100 }, { field: 'name', title: '姓名' }, { field: 'age', title: '年龄', sort: true }, { field: 'city', title: '城市' } ]], page: true, // 开启分页 limit: 10, // 每页显示数量 limits: [10, 20, 50] // 分页条数选 }); }, error: function(xhr) { console.error('请求失败:', xhr.status); layer.msg('数据加载失败,请重试'); } }); }); ``` --- ### 三、关键细节说明 #### 1. 数据格式适配 Layui 表格默认要求响应格式为: ```javascript { "code": 0, // 必须为 0 "msg": "", // 提示文本 "data": [], // 当前页数据列表 "count": 100 // 数据总数(分页时需要) } ``` - 如果接口返回格式不一致,需通过 `parseData` 自定义解析: ```javascript table.render({ // ... parseData: function(res) { return { "code": res.status === 200 ? 0 : 1, "msg": res.message, "data": res.result.items, "count": res.result.total }; } }); ``` #### 2. 动态重载表格 若需要重新加载数据(如搜索、分页),可结合 Layui 的 `table.reload`: ```javascript $('#search-btn').click(function() { const keyword = $('#keyword').val(); // 重新请求数据 $.get('/api/search?key=' + keyword, function(res) { table.reload('demo', { // 'demo' 为表格的 lay-filter 值 data: res.data, page: { curr: 1 } // 重置到第一页 }); }); }); ``` #### 3. 结合分页参数 若需后端分页,需在请求中传递当前页和每页数量: ```javascript table.render({ // ... page: true, request: { pageName: 'page', // 页码参数名 limitName: 'size' // 每页数量参数名 }, where: { // 额外参数(如搜索条件) searchKey: 'abc' } }); ``` --- ### 四、纯 Layui 方式 vs jQuery 方式 | 特性 | 纯 Layui 方式 (`url` 参数) | jQuery 方式 (手动 AJAX) | |--------------------|-----------------------------------|-------------------------------| | 代码简洁度 | ✅ 更简洁,自动处理分页和排序 | ❌ 需手动处理请求逻辑 | | 灵活性 | ❌ 依赖 Layui 的请求机制 | ✅ 可完全自定义请求逻辑 | | 分页支持 | ✅ 内置分页,自动传递页码参数 | ❌ 需自行处理分页参数 | | 错误处理 | ✅ 通过 `error` 回调统一处理 | ✅ 可在 AJAX 的 `error` 中处理 | | 适用场景 | 简单表格,接口符合规范 | 复杂请求(如多接口合并数据) | --- ### 五、完整示例(带分页) ```javascript layui.use(['table', 'layer'], function() { const table = layui.table; const layer = layui.layer; // 首次加载 loadTable(); function loadTable(params = {}) { $.ajax({ url: 'http://api.example.com/data', data: params, success: function(res) { table.render({ elem: '#demo-table', data: res.data, cols: [[/* 同上 */]], page: true, limit: res.limit || 10, done: function() { layer.closeAll('loading'); } }); }, error: function() { layer.msg('数据加载失败'); } }); } // 分页事件监听 table.on('page(demo)', function(obj) { loadTable({ page: obj.curr, // 当前页 size: obj.limit // 每页数量 }); }); }); ``` --- ### 六、常见问题 1. **表格渲染**: - 检查 `elem` 参数是否正确指向 HTML 元素。 - 确认数据格式是否包含 `code: 0`。 2. **跨域问题**: - 确保服务端设置了正确的 CORS 头。 3. **数据未更新**: - 使用 `table.reload` 而非重复调用 `table.render`。 4. **排序失效**: - 若手动请求数据,需监听排序事件: ```javascript table.on('sort(demo)', function(obj) { loadTable({ field: obj.field, order: obj.type }); }); ``` 通过以上方法,可以灵活结合 jQuery 的 AJAX 请求与 Layui 表格渲染功能,适应各种复杂场景需求。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值