Tengo esta función javascript que toma el resultado de la llamada ajax y crea una tabla html con él. Esta tabla representa una lista de informes.
Cada fila de una tabla está compuesta por el nombre del archivo del informe y la fecha de creación, y cuando hago clic sobre él, se abre una nueva página del navegador que me muestra el documento. Pero quiero descargarlo. ¿Cómo puedo obtenerlo?
Código:
function report_call(){ $.ajax({ type: 'GET', url: "/rest/v2/reports/", dataType: 'json', success: function (data) { $("#modal-body").html('') const YOURREPORTS_ROW = "yourReportRow"; const YOURREPORTS_TABLE = "yourReports-table-content"; let table = $(`#${YOURREPORTS_TABLE}`); table.html('') for(const key in data) { if(data[key].length == 0){ continue } data[key].forEach(report_type => { let url = report_type[2] // take file url let fname = report_type[0]; let fname_td = $(`<td>${fname}</td>`); let date = report_type[1]; let date_td = $(`<td>${date}</td>`); let onclick = ""; if(url !== ""){ onclick = `onclick="window.open('${url}', '_blank');"`; } let row = $(`<tr class="${YOURREPORTS_ROW}" [data-file="${fname}"] data-date="${date}" ${onclick}>`); row.append(fname_td); row.append(date_td); table.append(row); }) } } }) }En la web leí que puedo usar la palabra clave "descargar" en la etiqueta, pero aquí la situación es diferente. Lo intento de esta manera, no funciona.
Perdón por la ignorancia.
Utilice una etiqueta de anclaje con el atributo de download como se muestra a continuación. También puede agregar otro td para el enlace de descarga. Quite el evento onClick en la fila.
let date_td = $(`<td>${date} <a href=${url} download>Download</a></td>`);