我是Node.js中的新手并在服务器上工作。我试图将我的输出文件(html)的响应发送回NodeJS中的ejs。我将在下面详细解释,
我有一个发送HTTP请求的按钮(' POST')来运行下面代码中的ejs中的python文件,
在EJS中,
<div class="form-group" style='margin-bottom:0px;'><div id='Button'><input type='button' class="form-control" value='Request' id="sendButton" onclick="save3()"/></div></div>
<form action="/saveText" method="POST" id="myForm"><input type="hidden" id="metrics_id" ng-repeat="obj in tags" value="{{obj.name}}" name="metrics_name"></form>
<script>
function save3(){
console.log(document.getElementsByName("metrics_name")[0].value);
console.log(document.getElementsByName("metrics_name")[1].value);
console.log(myForm.getElementsByTagName('input').length);
}
$(document).on('click', '#sendButton', function(){
$('#myForm').submit();
});
</script>
然后它使用PythonShell调用python脚本在app.js(Node.js)中执行
Node.js的
app.post('/saveText', isLoggedIn, function(req, res){
var pyshell = new PythonShell('/public/make_bokeh.py');
pyshell.on('message', function(message){
console.log(message);
});
pyshell.end(function(err){
if(err){
throw err;
}
console.log("Finished");
res.sendFile(); ------------------------>I want to send output file back to EJS
});
});
在make_bokeh.py中,它在make_bokeh.py所在的目录中创建输出html文件。
问题是我想将HTTP响应发送回带有该输出文件的ejs,然后将其放入iframe。
是否有可能,或者有什么想法?
答案 0 :(得分:1)
愿你能做到:
. . .
pyshell.end(function(err){
if(err){
throw err;
}
console.log("Finished");
var HTMLFileGeneratedByPython = fs.readFileSync(path.join(__dirname, relPath));
res.render('template.ejs', { htmlFile: HTMLFileGeneratedByPython });
});
<!-- HTML HEADER -->
<body>
<%= htmlFile %>
</body>
</html>