我在node.js中很新手并试图将JSON数据从ejs传递到app.js 但我不知道如何从ejs传递到app.js。
我所做的是来自ejs的var stringify1 = <%- JSON.stringify(jsonfile_1) %>;
,
然后在用户点击“保存”按钮后,转到'/save'
然后我使用app.get,如下面的代码。
app.get('/save', isLoggedIn, function(req, res){
console.log(stringify1);
});
以下是来自ejs的部分脚本代码,它生成json数据然后转到app.get('/save',..
<script>
function save(){
var jsonfile_1 = {channel: {}};
for (i = 0; i < jsonfile.channel.length; i++){
var divData = document.getElementById(jsonfile.channel[i]);
var mac_tmp = jsonfile.channel[i];
if(divData.dataset.x != 0 && divData.dataset.y != 0){
jsonfile_1.channel[mac_tmp] = [divData.dataset.x, divData.dataset.y];
}
}
console.log(jsonfile_1.channel);
console.log(JSON.stringify(jsonfile_1));
var stringify1 = <%- JSON.stringify(jsonfile_1) %>;
saveText(JSON.stringify(jsonfile_1.channel), "hello.json");
}
</script>
这是我的按钮代码
<a onclick= "save()" id="imageSave" href="/save">Save</a>
我试图在谷歌找到但却找不到我想要的解决方案。
任何人都可以对此有所了解吗?
提前致谢。
使用上面的代码,它给了我一个jsonfile_1未定义的错误。
修改
<script>
function save(){
var jsonfile_1 = {channel: {}};
for (i = 0; i < jsonfile.channel.length; i++){
var divData = document.getElementById(jsonfile.channel[i]);
var mac_tmp = jsonfile.channel[i];
if(divData.dataset.x != 0 && divData.dataset.y != 0){
jsonfile_1.channel[mac_tmp] = [divData.dataset.x, divData.dataset.y];
}
}
console.log(jsonfile_1.channel);
console.log(JSON.stringify(jsonfile_1));
document.getElementById("jsonjson").value = JSON.stringify(jsonfile_1.channel);
saveText(JSON.stringify(jsonfile_1.channel), "hello.json");
}
function saveText(text, filename){
var a = document.createElement('a');
a.setAttribute('href', 'data:text/plain;charset=utf-u,'+encodeURIComponent(text));
a.setAttribute('download', filename);
a.click()
}
</script>
保存按钮
<li><a onclick= "save()" id="imageSave" href="/save">Save</a></li>
app.js
app.get('/save', isLoggedIn, function(req, res){
console.log(req.body.json1);
});
答案 0 :(得分:2)
最好将json内容放在表单内的隐藏字段中,并在单击saveImage链接时提交表单。
<form action="/save" id="hdnJsonForm" method="POST">
<input type="hidden" name="json1" id="jsonjson">
</form>
在javascript中,您必须在单击保存链接时提交表单。如果您使用的是JQuery,则可以实现此目的。
$(document).on('click','#imageSave',function(){
$('#hdnJsonForm').submit();
});
您接下来需要做的就是更改发布路线
app.post('/save', isLoggedIn, function(req, res){
console.log(stringify1);
});
希望它有所帮助!!