Javascript 在节点js中使用res.render()而不是res.send()
我已经为ckeditor编写了图像上传程序。每次上传文件时,必须将包含图像名称的html文件发送回客户端 这是我的密码:Javascript 在节点js中使用res.render()而不是res.send(),javascript,node.js,express,ckeditor,Javascript,Node.js,Express,Ckeditor,我已经为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.CKEd
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);
});
这将生成与上述硬编码解决方案完全相同的html文件,但是它不适用于ckeditor。这两种解决方案之间有什么显著的区别吗?您确定
[…]这会生成完全相同的html文件[…]
?您应该始终检查最终结果,例如在浏览器开发人员工具的“网络”选项卡中
如果imageName
是test.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>
(功能(){
var funcNum={{funcNum}};
var url=“/images/{{imageName}}”;
window.parent.CKEDITOR.tools.callFunction(funcNum,url);
}());
或
<script type='text/javascript'>
window.parent.CKEDITOR.tools.callFunction({{funcNum}}, "/images/{{imageName}}");
</script>
window.parent.CKEDITOR.tools.callFunction({funcNum},“/images/{{imageName}”);
否则,您将使用funcNum
和url
污染编辑器窗口的全局命名空间,谢谢!我愚蠢的错误是在var url=“/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>