狂奔的萝卜精 2025-01-11 20:53 采纳率: 50%
浏览 12
已结题

view给的列表字典,前端正常读,就是web不显示。log还能看到。为什么?

这是为什么?

img

JS能得到数组,前端不显示,搞不清楚啊!
Django的框架。

img


views函数内容

<script type="text/javascript">

        var nodes = [
            {
                text: "Node 1",
            },
            {
                text: "Node 2"
            }
        ];
        var sontree = []
        function refreshTable() {
            $.ajax({
                url: '/shu/lishitree/', 
                type:'get',
                dataType: 'json',
                success: function (data_dict) {
                    const values = Object.values(data_dict);
                    sontree = values[0]                                //部门列表
                    for (var i = 0; i < sontree.length; i++) {
                        nodes.push({
                                text: sontree[i]                       //添加部门到二级树形
                            })
                    }
                }
            })
        }
        refreshTable()
        var treeData = [{
            text: '网控中心',
            icon: "fa fa-cube",
            nodes: nodes
        }];
        $('#tree').treeview({
            data: treeData,// 树形菜单数据
            state: {
                expanded: true
            },
        });

        console.log(treeData)


前端代码

  • 写回答

3条回答 默认 最新

  • GISer Liu 2025-01-12 03:39
    关注

    该回答引用自GPT-deepseek, 由博主 GISer Liu 编写:

    问题分析

    用户在使用Django框架时,遇到了前端页面无法显示从后端获取的数据的问题。具体表现为:

    1. 前端代码:用户在前端使用JavaScript通过AJAX请求从Django后端获取数据,并将数据填充到树形结构中。
    2. 后端代码:用户的后端视图函数返回了一个字典,前端通过AJAX请求获取到这个字典,并将其解析为树形结构。
    3. 问题现象:前端能够通过console.log打印出数据,但页面上的树形结构并未显示数据。

    问题定位

    1. 数据获取:前端通过AJAX请求成功获取到了后端返回的数据,并且能够通过console.log打印出来,说明数据获取没有问题。
    2. 数据绑定:前端代码中,数据被成功绑定到nodes数组中,但树形结构并未更新显示。
    3. 树形结构更新:问题可能出在树形结构的更新机制上,即数据绑定后,树形结构没有重新渲染。

    解决方案

    1. 检查树形结构更新:确保在数据绑定后,树形结构能够重新渲染。
    2. 使用树形结构插件的方法:如果使用的是bootstrap-treeview插件,确保在数据更新后调用refreshrender方法。

    具体代码修改

    1. 修改前端代码

    success回调函数中,确保在数据绑定后调用树形结构的更新方法。

    function refreshTable() {
        $.ajax({
            url: '/shu/lishitree/', 
            type:'get',
            dataType: 'json',
            success: function (data_dict) {
                const values = Object.values(data_dict);
                sontree = values[0];  // 部门列表
                for (var i = 0; i < sontree.length; i++) {
                    nodes.push({
                        text: sontree[i]  // 添加部门到二级树形
                    });
                }
                // 更新树形结构
                $('#tree').treeview('render');
            }
        });
    }
    

    2. 确保树形结构插件正确初始化

    确保在页面加载时,树形结构插件已经正确初始化。

    $(document).ready(function() {
        var treeData = [{
            text: '网控中心',
            icon: "fa fa-cube",
            nodes: nodes
        }];
        $('#tree').treeview({
            data: treeData,  // 树形菜单数据
            state: {
                expanded: true
            },
        });
    
        refreshTable();  // 初始化时调用刷新函数
    });
    

    总结

    通过上述修改,确保在数据绑定后,树形结构能够正确更新并显示数据。如果问题仍然存在,可以进一步检查树形结构插件的文档,确保调用了正确的更新方法。

    参考文档

    希望这个解决方案能够帮助你解决问题!如果还有其他问题,欢迎继续提问。

    如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月21日
  • 已采纳回答 1月13日
  • 创建了问题 1月11日