layui原生form.select不支持url参数,需用layselect扩展;其url返回JSON必须为含code/codeName字段的数组,否则渲染失败;动态切换URL须先destroy再render,否则报错。

layui select 绑定外部 JSON 文件必须走 layselect 扩展,原生 form 模块不支持 url 参数
原生 layui 的 form.select 只能手动拼 option 或用 form.render('select') 重绘,它没有 url 配置项。你看到的 url: 'json/groupshow.json' 是第三方扩展 layselect 提供的能力,不是 layui 官方行为。直接在原生 form 模块里写 url 字段,会静默忽略——连控制台警告都没有。
layselect.render() 的 url 返回数据格式必须严格匹配
请求返回的 JSON 必须是数组,且每个对象至少含 code 和 codeName 字段,否则下拉框渲染为空或报错。常见错误是后端返回了带 data 包裹层的结构(比如 {"code":0,"data":[...]}),这时必须用 format 函数解包:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
format: function(data) {
return data.data || data; // 兼容有无 data 包裹
}
-
code字段作为value,不可为空字符串或null -
codeName字段作为显示文本,若缺失会导致选项空白 - 如果要默认选中某一项,优先用
option数组里的select: true,而不是靠select参数索引——后者在远程加载时无效
加载失败时 fail 回调不会自动提示,得自己加 layer.msg
layselect 的 fail 函数只传入原生 XMLHttpRequest 对象,不带状态码或错误信息字符串。你无法直接判断是 404、500 还是网络超时。实际使用中建议这样处理:
fail: function(xhr) {
var status = xhr.status;
if (status === 0) {
layer.msg('网络异常,请检查连接');
} else if (status >= 400) {
layer.msg('数据加载失败:' + status);
}
}
- 不要依赖
console.log查错,生产环境用户看不到 - JSON 文件路径必须是相对当前 HTML 的路径,不是相对于 JS 文件——这点和
table.render一致 - 如果 JSON 文件放在后端接口路径下(如
/api/select-options),需确保该接口返回Content-Type: application/json,否则部分浏览器会触发 CORS 或解析失败
动态切换 URL 时不能复用同一 elem,必须先销毁再重建
同一个 select DOM 元素不能多次调用 layselect.render()。第二次调用会报错 “already rendered”,且新数据不会生效。正确做法是先调用 layselect.destroy('id'),再重新 render:
layselect.destroy('unit');
layselect.render({
elem: '#unit',
url: '/json/type-' + typeId + '.json'
});
-
destroy的参数是render时传入的elem选择器字符串,不是 DOM 节点 - 如果只是刷新数据(比如搜索后重新加载),别忘了清空之前插入的
option,否则会叠加重复项 - 注意:
layselect不支持像table.reload()那样的快捷刷新,每次都要走完整生命周期

















