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

排查Select2联动触发Uncaught RangeError栈溢出问题

解决Uncaught RangeError: Maximum call stack exceeded错误

我帮你排查出了两个核心问题,正是它们导致了栈溢出错误:


1. Select2数据格式不匹配(主要原因)

你的populateSchemaDropDown函数直接把字符串数组传给了Select2的data选项,但Select2要求每个选项必须是包含id和text属性的对象。当Select2尝试解析不符合要求的纯字符串数组时,内部会触发错误的处理逻辑,最终导致无限递归,栈被耗尽。

修复方法:

修改populateSchemaDropDown函数,将字符串数组转换为Select2兼容的格式:

function populateSchemaDropDown(schemaList) {
  // 把纯字符串数组转成Select2需要的{id, text}对象数组
  const select2Data = schemaList.map(schema => ({
    id: schema,
    text: schema
  }));
  
  $('#schema').select2({
    placeholder: "--Select One--",
    allowClear: true,
    data: select2Data,
    dropdownAutoWidth: true
  });
}

2. 未定义变量的错误调用

在#schema的change事件处理函数中,你调用了getTable(schema),但这里的schema变量根本没有定义,应该使用你已经获取到的selectedSchema变量。虽然这个错误本身不会直接导致栈溢出,但它会让你的Table下拉框无法正常加载数据,同时可能干扰其他逻辑。

修复方法:

$("#schema").change(function() {
  var e = document.getElementById("schema");
  var selectedSchema = e.options[e.selectedIndex].value;
  console.log(selectedSchema);
  if (selectedSchema != "") {
    getTable(selectedSchema); // 把schema改为selectedSchema
  }
});

额外优化:完善Table下拉框逻辑

当前你的populateTableDropDown函数没有正确填充数据,还可以进一步完善,让它能接收Table数据并启用下拉框:

function populateTableDropDown(tableList) {
  const select2Data = tableList.map(table => ({
    id: table,
    text: table
  }));
  
  $("#table").select2({
    placeholder: "--Select One--",
    allowClear: true,
    data: select2Data,
    dropdownAutoWidth: true
  }).prop('disabled', false); // 选择Schema后启用Table下拉框
}

然后在getTable的success回调中调用这个函数:

function getTable(schema) {
  $.ajax({
    url: "heatmap.py",
    dataType: "json",
    data: {findTables: schema},
    success: function(results) {
      console.log(results);
      populateTableDropDown(results); // 填充Table下拉框
    },
    error: function() {
      console.log("table error");
    }
  });
}

这些修改应该能彻底解决栈溢出问题,同时让你的联动下拉框正常工作。

内容的提问来源于stack exchange,提问作者Kadeo13

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:51:36