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

传递UUID至descarga函数触发语法错误,请求技术帮助

解决UUID参数传递导致的SyntaxError错误

问题根源

你在拼接按钮的onclick属性时,未给UUID字符串添加引号。UUID包含短横线-,直接作为参数传入函数会被浏览器解析为无效的JavaScript语法,触发Invalid or unexpected token错误。

生成的错误HTML示例:

<button onclick='descarga(123e4567-e89b-12d3-a456-426614174000)'>Descargar</button>

无引号包裹的UUID被视为非法标识符,导致语法解析失败。

修复方案

方案1:给UUID添加引号(快速修复)

修改拼接按钮的代码,在UUID前后添加转义引号:

tr.append("<td>" + "<button class='btn btn-success btn-sm' onclick='descarga(\"" + id + "\")'>Descargar</button>" + "</td>");

或使用单引号转义写法:

tr.append('<td><button class="btn btn-success btn-sm" onclick="descarga(\'' + id + '\')">Descargar</button></td>');

方案2:使用事件绑定(推荐,更安全易维护)

避免内联onclick,改用jQuery事件绑定彻底规避引号问题:

// 创建按钮元素
const downloadBtn = $('<button class="btn btn-success btn-sm">Descargar</button>');
// 绑定点击事件,直接传入id
downloadBtn.click(() => descarga(id));
// 将按钮添加到单元格
tr.append($('<td>').append(downloadBtn));

修改后的核心代码片段

替换listarTkt函数中按钮拼接的部分:

if (dataArray[i].status === 3) {
  console.log(id);
  // 事件绑定方式创建按钮
  const downloadBtn = $('<button class="btn btn-success btn-sm">Descargar</button>');
  downloadBtn.click(() => descarga(id));
  tr.append($('<td>').append(downloadBtn));
} else {
  tr.append("<td></td>");
}

额外优化提示

descarga函数中用response.json()处理PDF响应错误,PDF是二进制数据,应改用response.blob():

fetch(downloadUrl + id + "/content", requestOptions)
  .then(response => response.blob()) // 替换为blob()解析二进制数据
  .then(result => {
    const url = window.URL.createObjectURL(result);
    const a = document.createElement('a');
    a.href = url;
    a.download = "ticket.pdf";
    a.click();
    window.URL.revokeObjectURL(url);
  })
  .catch(error => console.log('error', error));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:22:54