node怎么render渲染ajax数据

在后面ejs页面,管理员点击每个表,都会通过ajax把表名传给index.js,
index.js拿到表明去数据库读取相应的数据,读取完数据后,我不想把数据传给ajax,
而是直接render给ejs页面,为什么render过去的数据,在ejs没有反应

注:路径,读取数据什么的都没错,就算是redner给ejs,ejs接受不了

8个回答

使用ejs模板渲染的时候,默认应该是使用后台路由的时候才会起作用。
如果需要把渲染后的数据通过ajax返回到前端,应该是使用**app.render函数,而不是res.render函数**。app.render函数的回调函数的第二个参数,就是你需要发送到前端的渲染后的字符串。

 app.get("/ejs",function(req,res) {
    app.render("test.html",{
        username:"test username"
    },function(err,renderData) {
        res.set({
            "Access-Control-Allow-Origin": "*",
            "Access-Control-Allow-Methods": "POST, GET"
        })
        res.send(renderData)
    });
})

我先吃饭,如果不懂的话可以继续询问。

贴段代码出来看看,你这么说大家也没法理解呀

求解啊,大神们指点指点啊

route.get("/",(req,res)=>{
table_name = req.query.path || "banner_table";
console.log(table_name+"---table");
switch (req.query.act){
case "leave":
req.session["session_id"] = "";
res.redirect("/admin");
break;
case "delete":
db.query("DELETE FROM ?? WHERE id=?",[table_name,req.query.id],(err,data)=>{
if(err){
console.error( err );
res.status(50).send("database error del");
}else{
db.query("DELETE FROM img_src_table WHERE id_img=?",[req.query.id],(err,data)=>{});
db.query("DELETE FROM paragraph_table WHERE id_para=?",[req.query.id],(err,data)=>{});
db.query("SELECT * FROM ??",[table_name],(err,data)=>{
if(err){
console.error( err );
res.status(50).send("database error");
}else{
if( data.length == 0 ){
console.log("读取数据失败");
res.status(404).send("读取数据失败");
}else{
db.query("SELECT para,id_para FROM paragraph_table",(err,data_para)=>{
if( err ){
console.error("database error para");
}else{
db.query("SELECT img,id_img FROM img_src_table",(err,data_img)=>{
if( err ){
console.error("database error img");
}else{
var title_data_arr = title_data_arr_fn(data);
if( table_name == "article_table" ){//如果是文章表就添加段落和图片路径
title_data_arr.push('img');
title_data_arr.push('paragraph');
}
res.render("admin/index.ejs",{title_data_arr,data,para:data_para,img:data_img});
}
});
}
});
}
}
});
}
});
break;
default:
db.query("SELECT * FROM ??",[table_name],(err,data)=>{
if(err){
console.error( err );
res.status(500).send("database error default");
}else{
// if( data.length == 0 ){
// console.log("读取数据失败");
// res.status(404).send("读取数据失败");
// }else{
//获取相应表的表头数据
db.query("SELECT para,id_para FROM paragraph_table",(err,data_para)=>{
if( err ){
console.error("database error para");
}else{
db.query("SELECT img,id_img FROM img_src_table",(err,data_img)=>{
if( err ){
console.error("database error img");
}else{
var title_data_arr = title_data_arr_fn(data);
if( table_name == "article_table" ){//如果是文章表就添加段落和图片路径
title_data_arr.push('paragraph');
title_data_arr.push('img');
}
console.log(JSON.stringify(data)+"---data");
res.render("admin/index.ejs",{title_data_arr,data,para:data_para,img:data_img});
}
});
}
});
}
// }
});
break;
}
});
req.body.path就是ajax传过来的表名

$.ajax是get传参

图片说明这是我后台页面的ejs。ajax的作用
就是把管理员点击的表名传给index.js,ajax不需要接收数据。我现在想把index.js拿到的数据还是传给ajax这个ejs页面,
但不是用过ajax。惹事通过render的方式。
你给的解决办法好像是吧数据传给前端html也main把,没怎么看懂
烦请指点

是这样的。
ajax是异步请求,不会跳转页面。此时页面路径并没有发生变化,所以后台的路由不能控制页面刷新。
给你提供2种解决办法:
1. 使用window.location.href = url跳转页面。url就是需要请求的那个ajax地址
2. ajax请求成功后,在html页面使用js动态渲染数据。

qq_36662470
ma125120 回复qq_38854852: 1251208555
2 年多之前 回复
qq_38854852
qq_38854852 没懂你的意思,这样吧,我加下你qq,我具体更你说下我遇到的问题
2 年多之前 回复

window.location.href 肯定不行,因为这样互刷新页面,table_name又默认为banner_table。你说的把数据返回ajax。
可是用ajax动态添加数据没render给ejs的数据那么方便使用。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问