layui zTree 控件 AJAX绑定 点击tree事件 获取tree值

html和js

html 复制代码
 <div>
     <ul id="treeDemo" class="ztree"></ul>
 </div>
 <script>
     // zTree 配置
     var setting = {
         data: {
             simpleData: {
                 enable: true,
                 idKey: "id",
                 pIdKey: "pid",
                 rootPId: 0
             }
         },
         callback: {
             onClick: zTreeOnClick  // 点击事件
         }
     };
     // ===================== 关键:AJAX 获取树数据 =====================
     $(function () {
         $.ajax({
             type: "POST",
             data: [],
             url: "/SalesOpportunity/GET_SALES_OPPORTUNITY_PROJECT",
             success: function (res) {
                 console.log(res, zNodes);
                 var zNodes = res.data;
                 // 初始化树
                 $.fn.zTree.init($("#treeDemo"), setting, zNodes);
             }
         });
     });

     // zTree点击事件
     function zTreeOnClick(event, treeId, treeNode) {
         //$("#showText").text("ID:" + treeNode.id + ",名称:" + treeNode.name);
         $("#PROJECT_TITLE").val(treeNode.name);
         $("#PROJECT_INFO").val(treeNode.name);
         $("#EST_AMOUNT").val(treeNode.id * 10);

         $("#NEEDS").val(treeNode.name);
         $("#RESPONSE").val(treeNode.name);
         $("#NEED_SUPPORT").val(treeNode.name);

         $("#PROJECT_STATUS").val("进行中");
         $("#PROJECT_LEVEL").val("A");
         $("#REMARKS").val(treeNode.name);
     }

     // 点击按钮 → 获取当前选中的节点
     function getTreeSelected() {
         // 1. 获取 zTree 实例
         var zTree = $.fn.zTree.getZTreeObj("treeDemo");

         // 2. 获取当前选中的节点
         var nodes = zTree.getSelectedNodes();

         // 3. 判断有没有选中
         if (nodes.length == 0) {
             layer.msg("请先选择一个项目!", { icon: 2 });
             return;
         }

         // 4. 拿到值!
         var id = nodes[0].id;
         var name = nodes[0].name;

         // 你想干嘛就干嘛
         alert("选中ID:" + id + "\n选中名称:" + name);
     }
 </script>

Controller:

cs 复制代码
        [HttpPost]
        public ActionResult GET_SALES_OPPORTUNITY_PROJECT()
        {
            MyResponse result = new MyResponse();
            result.code = 200;
            result.success = true;
            result.message = "";

            List<zTreeClass> list = new List<zTreeClass>();
            for (int i = 0; i < 5; i++)
            {
                zTreeClass z = new zTreeClass();
                z.id = i+1;
                z.name = $"XXX项目{i + 1}";
                z.pid = 0;
                list.Add(z);
            }
            result.data = list;

            return Json(result);
        }

        public class zTreeClass
        {
            //节点的id值
            public int id { get; set; }
            //节点的name值
            public string name { get; set; }
            //父节点id值,多层tree的子节点配置此id值,根结点id为0
            public int pid { get; set; } = 0;
        }

后端返回data的格式要求(必须这样)

cs 复制代码
{
  "code": 0,
  "data": [
    { "id": 1, "name": "XXXX项目1", "pid": 0 },
    { "id": 2, "name": "XXXX项目2", "pid": 0},
    { "id": 3, "name": "XXXX项目3", "pid": 0},
    { "id": 4, "name": "XXXX项目4", "pid": 0 }
  ]
}

预览

相关推荐
豆角焖肉7 小时前
Layui+Layer 弹出层实现 CRUD:AJAX 无刷新新增修改删除后台实战
前端·ajax·layui
消失的旧时光-19431 天前
第十篇:Ktor Custom Client Plugin:从 OkHttp Interceptor 真正理解请求与响应生命周期
okhttp·plugin·ktor·kmp
小白勇闯网安圈2 天前
Vue 进阶实战:事件修饰符、表单控制、购物车与 Ajax 请求
前端·vue.js·ajax
mmsx2 天前
基于 Android 的校园信息管理系统源码
android·java·okhttp
Full Stack Developme9 天前
跨站请求伪造 (CSRF) 是什么 设计及工作原理
前端·okhttp·csrf
鬼手点金10 天前
Scrapy 网络爬虫框架
爬虫·python·scrapy·ajax·html·json·requsts
云水一下11 天前
零基础玩转bWAPP靶场(四十六):XSS - Reflected (AJAX/JSON)
web安全·ajax·json·xss·bwapp·reflected
starzy199011 天前
Spark 核心之自定义累加器以及版本对比变化深度剖析
大数据·ajax·spark
weixin_4407841111 天前
【OkHttp实现原理】
android·java·okhttp
云水一下11 天前
零基础玩转bWAPP靶场(四十七):XSS - Reflected (AJAX/XML)
xml·web安全·ajax·xss·bwapp