gpt4 book ai didi

javascript - 在 Node js 中使用 res.render() 而不是 res.send()

转载 作者:搜寻专家 更新时间:2023-10-31 23:42:32 26 4
gpt4 key购买 nike

我已经为 ckeditor 编写了图像上传程序。每次上传文件时,都必须将包含图像名称的 html 文件发送回客户端。

这是我的代码:

router.post('/upload', function (req, res, next) {
var imageName = req.files.upload.name;

var html = "<script type='text/javascript'>" +
"var funcNum = " + req.query.CKEditorFuncNum + "; " +
"var url = \"/images/" + imageName + "\";" +
"window.parent.CKEDITOR.tools.callFunction(funcNum, url);" +
"</script>";

res.send(html);
});

这是一个非常肮脏的解决方案,所以我创建了以下 .hjs 文件并相应地映射了值:

<script type='text/javascript'>
var funcNum = {{funcNum}};
var url = "/images/" + {{imageName}};
window.parent.CKEDITOR.tools.callFunction(funcNum, url);
</script>

还有我的服务器端:

router.post('/upload', function (req, res, next) {
var imageName = req.files.upload.name;
res.render('ckeditor-response', {funcNum: req.query.CKEditorFuncNum, imageName: imageName});
});

这会生成与上面的硬编码解决方案完全相同的 html 文件,但是它不适用于 ckeditor。这两种解决方案之间有什么显着差异吗?

最佳答案

你确定[...]This generates exactly the same html file[...]吗?您应该始终检查最终结果,例如在浏览器开发人员工具的网络选项卡中。

如果 imageNametest.jpg 你的第一个代码创建

var url = "/images/test.jpg";

但是您的 hjs 将创建:

 var url = "/images/" + test.jpg;

这是一个语法错误。您正在寻找 "/images/{{imageName}}";

除此之外,你应该这样写回复:

<script type='text/javascript'>
(function() {
var funcNum = {{funcNum}};
var url = "/images/{{imageName}}";
window.parent.CKEDITOR.tools.callFunction(funcNum, url);
}());
</script>

<script type='text/javascript'>
window.parent.CKEDITOR.tools.callFunction({{funcNum}}, "/images/{{imageName}}");
</script>

否则,您将污染编辑器窗口的全局命名空间为funcNumurl

关于javascript - 在 Node js 中使用 res.render() 而不是 res.send(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29146751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com