ajax外层获取到ajax的返回值

请求第一次报错Uncaught ReferenceError: child is not defined,说这child没有定义,第二次就能输返回值了,试过用var,let,const和不加,都不行
请问下有什么方法可以正确的取出child 值尼
<script>
    layui.use(['admin', 'table'], function () {
        let $ = layui.$,
            setter = layui.setter,
            admin = layui.admin;
        //  请求数据
        admin.req({
            url: setter.baseUrl + "/role/authority",
            method: 'post',
            success: function (res) {
                child = res.data
            }
        })
        let selectHtml = ''
        for (const argumentsKey of child) {  //这里就报错了

            selectHtml += '<input type="checkbox" name="parent[]" lay-skin="primary" title= "' + argumentsKey +'">'
        }
        $('#authority').append(selectHtml)
        
    })
</script>

设置一个延时再执行,程序DOM还没出来,先运行了admin.req方法。

ajax异步加载的,没执行success就已经执行下面的代码了当然报错了,要使用到child的代码要放到success回调中

layui.use(['admin', 'table'], function () {
        let $ = layui.$,
            setter = layui.setter,
            admin = layui.admin;
        //  请求数据
        admin.req({
            url: setter.baseUrl + "/role/authority",
            method: 'post',
            success: function (res) {
                child = res.data
console.log('authority==>'+$('#authority').length);/////加这句打印开下输出是0还是1,输出说明authority也是异步加载的
 let selectHtml = '' 
for (const argumentsKey of child) { 
selectHtml += '<input type="checkbox" name="parent[]" lay-skin="primary" title= "' + argumentsKey +'">' 
}
 $('#authority').append(selectHtml)

            }
        })
        
    })

 

刚写的ajax demo

let todos = {
                        /*******************************************************************************************************************************
                        * 做Home页面 第一张Card *
                        ********************************************************************************************************************************/
                        // 第一张Card的配置
                        firstHomeCard: [
                            {
                                tab: "notice",
                                title: "A_Title",
                                desc: "A_OkTime",
                            },
                        {
                            tab: "meeting",
                            title: "a.CN_Title",
                            desc: "a.CN_PlanSTime",
                        }],
                        // 制作Card的函数
                        toDofirstHomeCard: (data,tab) => {
                            try {
                                let length = 0;
                                if (data) {
                                    length = data.length;
                                }
                                let config = todos.firstHomeCard.filter((item) => item.tab == tab)[0];
                                let templateNode = $("#first-home-card > div:first");
                                templateNode.css("display", "block");
                                $("#first-home-card > div:not(:first)").remove();
                                for (let i = 0; i < length && i < 10; i++) {
                                    let node = templateNode.clone();
                                    let item = data[i];
                                    let title = '';
                                    let time = '';
                                    title = eval("item." + config.title).length < 26 ? eval("item." + config.title) : eval("item." + config.title).substring(26) + '...';
                                    time = moment(eval("item." +config.desc)).format("YYYY-MM-DD HH:mm:ss");
                                    node.find(".title").html(title);
                                    node.find(".title").attr("title", eval("item." + config.title));
                                    node.find(".desc").html(time);
                                    node.find(".desc").attr("title", time);
                                    $("#first-home-card").append(node);
                                }
                                templateNode.css("display", "none");
                            } catch (e) {
                                console.log("-->", e);
                            }
                        }
                    }
                    $(function () {
                        $("#first-home-tab > div").on("click", (e) => {
                            $("#first-home-tab > div").removeClass("active");
                            $(e.currentTarget).addClass("active");
                            let tab = $(e.currentTarget).attr("data-tab");
                            if (tab == "notice") {
                                $.ajax({
                                    url: "/Home/GetTZGGZMH/",
                                    data: null,
                                    type: "POST",
                                    success: function (data) {
                                        todos.toDofirstHomeCard(data,tab);
                                    }
                                })
                            } else {
                                $.ajax({
                                    url: "/Home/MeetingNoticeZMH/",
                                    data: null,
                                    type: "POST",
                                    success: function (data) {
                                        todos.toDofirstHomeCard(data,tab);
                                    }
                                })
                            }
                        })

                    })

 用回调函数去接

不行下面就是放到里面去的效果

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632