javascript - 如何使用客户端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 可以采用局部变量,不应该设置标题?
解决方案
您应该返回 json 而不是渲染模板:
app.get('content/index', (req, res) => {
res.json({data: queryData});
});
推荐阅读
- junit - 如何修复“java.lang.AssertionError:预期:
但是是: “? - forms - 在运行 Powershell 脚本之前提示域管理员凭据
- javascript - 如何在完成时阻止javascript计时器重置
- python - 我可以使用上下文值作为 click.option() 默认值吗?
- linux - 在 jupyter 笔记本终端上运行 GUI 应用程序 (DISPLAY) - Linux
- amazon-dynamodb - DynamoDB 邻接列表模式
- sql - SQL IF ELSE 插入#temp 表问题
- python - python - 如何根据与python pandas中前一行的差异来移动列值?
- javascript - 这可以重构为示例中更可组合的样式吗?
- java - org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild:开始:org.apache.catalina.LifecycleException