JS - Uncaught SyntaxError:无效或意外的令牌



我需要传递一个id(这是一个UUID)给一个函数来做一个get请求,但是当我点击"我得到消息

Uncaught SyntaxError: Invalid or unexpected token (at mis_solicituds .html:1:19)

我知道html没有读取我作为descarga函数的入口参数传递的uid。

你能帮帮我吗?

这是我完整的JS代码:

window.onload = function() {
listarTkt();
};



function listarTkt() {
let headers = new Headers();
headers.append("Authorization", token);

var requestOptions = {
method: 'GET',
headers: headers,
redirect: 'follow'
};

fetch(url, requestOptions)
.then(response => response.json())
.then(result => {
console.log(result)
if (result.length === 0) {
document.getElementById("tableBody").innerHTML = "";
document.getElementById("tableBody").innerHTML = "<h1>No hay solicitudes</h1>";
} else {
let dataArray = result;
for (let i = 0; i < dataArray.length; i++) {
let id = dataArray[i].request_id.toString();
console.log(typeof(id));
tr = $('<tr/>');
tr.append("<td>" + dataArray[i].tkt_date + "</td>");
tr.append("<td>" + dataArray[i].tkt_checkout_nr + "</td>");
tr.append("<td>" + dataArray[i].tkt_store_nr + "</td>");
tr.append("<td>" + dataArray[i].tkt_op_nr + "</td>");
if (dataArray[i].status === 5){
tr.append("<td>No encontrado(5)</td>");
} else if (dataArray[i].status === 0) {
tr.append("<td>Solicitud nueva</td>");
} else if (dataArray[i].status === 1) {
tr.append("<td>Solicitud en proceso</td>");
} else if (dataArray[i].status === 3) {
tr.append("<td>Lista para descargar</td>");
} else if (dataArray[i].status === 6) {
tr.append("<td>No encontrado(6)</td>");
} else if (dataArray[i].status === 9) {
tr.append("<td>Error</td>");
}
if (dataArray[i].status === 3) {
console.log(id);
tr.append("<td>" + "<button class='btn btn-success btn-sm' onclick='descarga(" + id + ")'>Descargar</button>" + "</td>");


} else {
tr.append("<td></td>");
}


$('#tableBody').append(tr);


}



}
})


.catch(error => console.log('error', error));
}

function descarga(id) {
let headers = new Headers();
headers.append("Authorization", token);
headers.append("Content-Type", "application/json");

let requestOptions = {
method: 'GET',
headers: headers,
redirect: 'follow'
}

fetch(downloadUrl +  id + "/content", requestOptions)
.then(response => response.json())
.then(result => {
console.log(result)
const blob = new Blob([result], { type: 'application/pdf' });
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = "ticket.pdf";
a.click();
window.URL.revokeObjectURL(url);
})
.catch(error => console.log('error', error));
}

最后我发现我需要转义onclick="的声明和闭引号

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