You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Select2插件遇TypeError: g is undefined错误,求解决方案

解决Select2插件「TypeError: g is undefined」错误

我帮你排查了下这个问题,结合你给出的代码和JSON响应,几个小细节的问题可能导致了这个报错:

问题分析

  1. tags 参数类型错误:你设置的是tags: "true"(字符串类型),但Select2要求这个参数是布尔值true/false,字符串类型会干扰插件内部逻辑,引发异常。
  2. templateResult 中HTML结构不完整:你拼接的markup里<span>标签没有闭合,残缺的HTML会让Select2渲染时出错,进而触发这类minified代码里的模糊报错。
  3. 可选优化:避免全局变量污染:在templateSelection里直接给userId赋值,会污染全局作用域,建议改用局部变量或其他方式存储。

修正后的完整代码

$('#medicine_id').select2({
  tags: true, // 改为布尔值类型
  placeholder: "Medicine",
  ajax: {
    url: '/medicinename',
    dataType: 'json',
    delay: 200,
    data: function(params) {
      return {
        q: params.term,
      };
    }
  },
  minimumInputLength: 3,
  templateResult: function(repo) {
    if (repo.loading) return repo.text;
    // 补全闭合的span标签,统一写法让代码更整洁
    var markup = '<div><span style="margin-left:10px;">' + repo.text + '</span></div>';
    return markup;
  },
  templateSelection: function(repo) {
    // 改用局部变量存储,避免全局污染
    const userId = repo.id; 
    return repo.text;
  },
  escapeMarkup: function(markup) {
    return markup;
  }
});

额外说明

你的JSON响应格式是完全符合Select2要求的(包含id和text核心字段),这部分没问题。修改后应该就能解决「g is undefined」的报错了,如果还有问题,可以检查下页面是否正确引入了jQuery和Select2的依赖,并且确保DOM元素#medicine_id在代码执行前已经加载完成(比如把代码放在$(document).ready()回调里)。

内容的提问来源于stack exchange,提问作者mc160201376 Ahtisham Shahid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:39:58