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

求助:Uncaught SyntaxError: Identifier 'html'已被声明错误排查

排查"Uncaught SyntaxError: Identifier 'html' has already been declared"错误

这个错误的核心原因是当前作用域内,html变量已经被声明过一次——哪怕你代码里用的是var(var允许重复声明但会覆盖,但若其他地方用let/const声明过html,就会直接抛出这个语法错误)。结合你的代码,排查方向和解决方案如下:

1. 检查脚本是否被重复加载

打开你的HTML文件,确认是否多次引入了obtenerTipos.js,或者通过动态加载脚本的逻辑重复执行了这段代码。重复执行会导致var html被多次声明,若环境严格或存在其他let/const声明的html,就会触发错误。

2. 避免全局作用域变量冲突

你的代码直接在全局作用域声明变量,很容易和其他脚本的变量冲突。建议把代码封装成独立函数,让变量处于局部作用域:

function cargarTipos() {
  var xmlHttp = new XMLHttpRequest();
  xmlHttp.open(
    "GET",
    "http://localhost:8080/recetarioappmain/sistema/API/tipos.php",
    false
  );
  xmlHttp.send(null);

  var resultadoTipos = JSON.parse(xmlHttp.responseText);
  // 此处的html是函数内部变量,不会和全局变量冲突
  var html = '<option value="">Seleccione un tipo</option>';
  for (var i = 0; i < resultadoTipos.length; i++) {
    html +=
      '<option value="' +
      resultadoTipos[i].id +
      '">' +
      resultadoTipos[i].nombre +
      '</option>';
  }

  document.getElementById("id_tipos").innerHTML += html;
}

// 调用函数执行逻辑
cargarTipos();

3. 替换var为let/const(可选)

把var html改成let html,这样如果存在重复声明的情况,浏览器会抛出更明确的错误,帮你快速定位重复声明的位置:

let html = '<option value="">Seleccione un tipo</option>';

额外优化:改用异步请求(推荐)

你当前使用的是同步XMLHttpRequest,这种方式会阻塞主线程导致页面卡顿,建议改成异步模式:

function cargarTipos() {
  var xmlHttp = new XMLHttpRequest();
  xmlHttp.open(
    "GET",
    "http://localhost:8080/recetarioappmain/sistema/API/tipos.php",
    true
  ); // 开启异步

  xmlHttp.onload = function() {
    if (xmlHttp.status === 200) {
      var resultadoTipos = JSON.parse(xmlHttp.responseText);
      var html = '<option value="">Seleccione un tipo</option>';
      for (var i = 0; i < resultadoTipos.length; i++) {
        html +=
          '<option value="' +
          resultadoTipos[i].id +
          '">' +
          resultadoTipos[i].nombre +
          '</option>';
      }
      document.getElementById("id_tipos").innerHTML += html;
    }
  };

  xmlHttp.send(null);
}

cargarTipos();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:46:39