AJAX GET请求导出文件无响应流,Postman正常,原因何在?

前端做导出的时候,response中无流信息,但是把参数放到postman中测试确有流信息。

      let str =
        `http:192.168.2.49:10002/jysp-cruise-server/cruise/result/exportRunningLogWord?directCurrent=${row.directCurrent}&alternatingCurrent=${row.alternatingCurrent}`;
      const link = document.createElement("a");
      link.style = "display: none;";
      link.href = str;
      document.body.appendChild(link);
      link.click();
      document.body.removeChild(link);
阅读 900
4 个回答
新手上路,请多包涵

后端提供的接口是get请求,但是前端在传参的时候需要对参数进行编码。否则接口会一直调取失败。至于为什么要编码,后端未说明情况
${encodeURIComponent(row.directCurrent)}&alternatingCurrent=${encodeURIComponent(row.alternatingCurrent)}

实际访问的地址是否和预期有偏差,然后直接拿着链接在浏览器打开是否能正常下载

猜测是跨域了。既然是 GET,试试直接 <a target="_blank">

你是不是想使用使用fetch API,我帮你改了一下

let str = `http://192.168.2.49:10002/jysp-cruise-server/cruise/result/exportRunningLogWord?directCurrent=${row.directCurrent}&alternatingCurrent=${row.alternatingCurrent}`;
fetch(str)
  .then(response => response.blob())
  .then(blob => {
    const link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    link.download = 'filename.docx'; // 设置下载文件名
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
  })
  .catch(error => console.error('Error:', error));
推荐问题
宣传栏