首页 > 解决方案 > 如何使用客户端javascript访问节点服务器发送的数据

问题描述

我正在使用节点服务器将表从 sqlite db 发送到浏览器。此表包含我想在浏览器上呈现的 pdf 文件的文件名和路径。到目前为止,我一直在为 pdf 文件和渲染使用硬编码路径。但是现在我已经在节点中设置了一个获取路由和一个控制器,这样每当在浏览器中点击“/内容”时,服务器就会查询数据库并将数据发送到客户端。发送我正在使用的数据

res.render('content/index',{data:queryData});

现在,如何使用客户端 javascript 访问这些数据,以便可以将 pdf 文件的路径传递给呈现 pdf 的函数?我已经进行了研究,我得到的最接近的答案是使用 XMLHttpRequest。我试过这个方法

var xhr = new XMLHttpRequest();
const path = "http://localhost:3000/content";
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200)
{
   var myResponseText = xhr.responseText;
   console.log(myResponseText);
}
};
xhr.open('get', path, true);
xhr.send();

当我这样做时,我得到了视图的整个 html 代码。不是我预期的数据。我该如何解决这个问题。我在写这篇文章时做了更多的阅读,我想。我在某处设置了标题?但文件说

app.render(view, [locals], callback)

这意味着 res.render 可以采用局部变量,不应该设置标题?

标签: javascriptnode.jspdf.js

解决方案


您应该返回 json 而不是渲染模板:

app.get('content/index', (req, res) => {
  res.json({data: queryData});
});

推荐阅读