惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
S
Securelist
P
Proofpoint News Feed
H
Help Net Security
S
Schneier on Security
T
Tenable Blog
C
Cisco Blogs
S
Security @ Cisco Blogs
博客园 - 司徒正美
博客园 - 叶小钗
Cisco Talos Blog
Cisco Talos Blog
Google DeepMind News
Google DeepMind News
C
Cybersecurity and Infrastructure Security Agency CISA
Google Online Security Blog
Google Online Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hacker News: Ask HN
Hacker News: Ask HN
NISL@THU
NISL@THU
云风的 BLOG
云风的 BLOG
V
Vulnerabilities – Threatpost
T
The Blog of Author Tim Ferriss
aimingoo的专栏
aimingoo的专栏
W
WeLiveSecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Jina AI
Jina AI
腾讯CDC
WordPress大学
WordPress大学
Simon Willison's Weblog
Simon Willison's Weblog
Vercel News
Vercel News
小众软件
小众软件
N
Netflix TechBlog - Medium
有赞技术团队
有赞技术团队
AWS News Blog
AWS News Blog
雷峰网
雷峰网
Forbes - Security
Forbes - Security
The Hacker News
The Hacker News
博客园 - 聂微东
F
Full Disclosure
量子位
Scott Helme
Scott Helme
宝玉的分享
宝玉的分享
A
About on SuperTechFans
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Schneier on Security
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
K
Kaspersky official blog
AI
AI
SecWiki News
SecWiki News
Webroot Blog
Webroot Blog
Martin Fowler
Martin Fowler

博客园 - bwteacher

mysql实用 mysql操作错误 fastadmin操作 fastadmin下的多级联动 CentOS7安装Python3.10环境 表单提交fastadmin form jdk-24及tomcat-11.0.9(解压版)安装配置 mermaid基于 JavaScript 的图表绘制工具 HbuilderX 小随笔 v-bind和v-model的区别 v-if和v-show的区别 uniapp中@tap与@click点击事件的差异 PHP常用数学函数 距离-有这么多类 bootstrap.table汇总 selectpage汇总 jQuery没有匹配到任何内容,返回什么? js数组常用方法 thinkphp控制器名称命名相关 php常见错误码 ThinkPHP的join关联查询不使用默认的表前缀 阿里云虚拟主机创建https
fastadmin中前端表格中字段状态动态加载问题
bwteacher · 2026-07-22 · via 博客园 - bwteacher

这个问题在 FastAdmin 中比较常见,根本原因通常出在 数据格式异步加载时机 两个方面。下面帮你分析原因并给出解决方案。

searchList 在 FastAdmin 中要求的数据格式是一个 键值对对象(JSON Object),形如 {1: '是', 0: '否'}。当你改为动态获取时,"有时能用有时不行" 通常是以下几个原因导致的:

数据格式不对

后端返回的数据如果是数组(JSON Array)而不是对象(JSON Object),searchList 就无法正确解析。尤其是 PHP 中 json_encode 在数组键全是数字时,默认会编码成数组格式 [] 而不是对象 {}

关键细节:PHP 的 json_encode() 遇到纯数字键的关联数组时,会自动转成 JSON 数组,导致前端拿到的是 ["否", "是"] 而不是 {"0": "否", "1": "是"}

异步加载时机问题

$.getJSON() 是一个异步请求。如果表格在数据还没返回时就已经完成初始化渲染,searchList 拿到的就是一个未完成的 Promise 或空值,导致下拉框无法显示选项。

键的类型不一致

后端返回的键如果是整数类型(如 01),而表格匹配时用的是字符串类型(如 "0""1"),也可能导致匹配失败,表现为"数据加载了但选不了"。

方案一:后端确保返回 JSON 对象格式(推荐)

在 PHP 后端接口中,使用 JSON_FORCE_OBJECT 强制输出为对象格式:
public function getSingleList() { $list = [ 1 => __('是'), 0 => __('否') ]; // 关键:加上 JSON_FORCE_OBJECT,确保输出为 {"1":"是","0":"否"} echo json_encode($list, JSON_FORCE_OBJECT); }public function getSingleList() { $list = [ 1 => __('是'), 0 => __('否') ]; // 关键:加上 JSON_FORCE_OBJECT,确保输出为 {"1":"是","0":"否"} echo json_encode($list, JSON_FORCE_OBJECT); }

public function getSingleList()
{
    $list = [
        1 => __('是'),
        0 => __('否')
    ];
    // 关键:加上 JSON_FORCE_OBJECT,确保输出为 {"1":"是","0":"否"}
    echo json_encode($list, JSON_FORCE_OBJECT);
}

方案二:前端用 Object.assign 转换格式

searchList: Object.assign({}, Config.yourDynamicList)

方案三:使用 Function 方式动态返回

searchList 也支持传入一个函数,可以这样写:

{
    field: 'single',
    title: __('Single'),
    searchList: function() {
        var result = {};
        $.ajax({
            url: "your/controller/getSingleList",
            async: false,  // 同步请求,确保拿到数据再返回
            success: function(data) {
                result = data;
            }
        });
        return result;
    },
    operate: false,
    formatter: Table.api.formatter.status
}注意:async: false 会阻塞浏览器,数据量小且请求快的场景下可以用

public function getSingleList() { $list = [ 1 => __('是'), 0 => __('否') ]; // 关键:加上 JSON_FORCE_OBJECT,确保输出为 {"1":"是","0":"否"} echo json_encode($list, JSON_FORCE_OBJECT); }