请求第一次报错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