Node.js ejs如何发送变量进行续集?
我正在制作一个NodeJSExpress应用程序。我使用ejs作为我的模板引擎。 在我的一个ejs文件中,我有一个树状视图。此树状图中有一个事件,用于在其中发生更改时显示该事件。我使用此事件来获取treeview的结构Node.js ejs如何发送变量进行续集?,node.js,express,sequelize.js,ejs,Node.js,Express,Sequelize.js,Ejs,我正在制作一个NodeJSExpress应用程序。我使用ejs作为我的模板引擎。 在我的一个ejs文件中,我有一个树状视图。此树状图中有一个事件,用于在其中发生更改时显示该事件。我使用此事件来获取treeview的结构 $('#tree').on("changed.jstree", async function (e, data) { var v = $('#tree').jstree(true).get_json('#', {flat:true});
$('#tree').on("changed.jstree", async function (e, data) {
var v = $('#tree').jstree(true).get_json('#', {flat:true});
var mytext = JSON.stringify(v);
});
这很好,我得到了我想要的数据。但我也想把它发送到我的数据库。为此,我使用sequelize。
我第一次尝试更新我的数据库:
$('#tree').on("changed.jstree", async function (e, data) {
var v = $('#tree').jstree(true).get_json('#', {flat:true});
var mytext = JSON.stringify(v);
<%- world.treeData = v%>
});
$('#tree').on(“changed.jstree”,异步函数(e,data){
var v=$('#tree').jstree(true).get_json('#',{flat:true});
var mytext=JSON.stringify(v);
});
world是从我的index.js文件传递的,我的所有路由都在该文件中。但是ejs无法访问v变量,因为ejs是在javascript启动之前运行的。
所以我需要一种方法将这个v变量放到我的数据库中。有什么方法可以做到这一点吗?您对客户端和服务器之间的关系有很大的误解。EJS不能“发送”任何东西-我只是一个模板引擎。它动态构造一个HTML字符串,Express稍后将其作为HTML文档发送到浏览器(当然还有JS文件/代码)。在此之后,可以说EJS“停止”存在 为了从JS事件侦听器发送数据,需要向服务器中的某个端点执行AJAX请求,然后服务器将使用Sequelize将其存储在数据库中。我给你举个例子: 假设您想注册一个新用户。你的JS:
$('#tree').on("changed.jstree", async function (e, data) {//Let's say you want to register a new user.
var v = $('#tree').jstree(true).get_json('#', { flat: true });
var newUserData = JSON.stringify(v);
fetch('http://localhost:8000/user', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: newUserData,
})
.then((response) => response.json())
.then((data) => {
console.log('Success:', data);
})
.catch((error) => {
console.error('Error:', error);
});
});
处理此请求的快速路线:
app.post('/user', async function (req, res) {
try {
const newUserData = req.body;
const createdUser = await UserModel.create(newUserData)//This is where Sequelize comes into picture.
res.json({id:createdUser.id})
} catch (error) {
console.log(error)
res.sendStatus(500)
}
})
您对客户机和服务器之间的关系有很大的误解。EJS不能“发送”任何东西-我只是一个模板引擎。它动态构造一个HTML字符串,Express稍后将其作为HTML文档发送到浏览器(当然还有JS文件/代码)。在此之后,可以说EJS“停止”存在 为了从JS事件侦听器发送数据,需要向服务器中的某个端点执行AJAX请求,然后服务器将使用Sequelize将其存储在数据库中。我给你举个例子: 假设您想注册一个新用户。你的JS:
$('#tree').on("changed.jstree", async function (e, data) {//Let's say you want to register a new user.
var v = $('#tree').jstree(true).get_json('#', { flat: true });
var newUserData = JSON.stringify(v);
fetch('http://localhost:8000/user', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: newUserData,
})
.then((response) => response.json())
.then((data) => {
console.log('Success:', data);
})
.catch((error) => {
console.error('Error:', error);
});
});
处理此请求的快速路线:
app.post('/user', async function (req, res) {
try {
const newUserData = req.body;
const createdUser = await UserModel.create(newUserData)//This is where Sequelize comes into picture.
res.json({id:createdUser.id})
} catch (error) {
console.log(error)
res.sendStatus(500)
}
})