搜索

首页  >  问答  >  正文

node.js - 关于ejs页传参的问题

刚刚在学ejs+express,正在做一个小网页。过程是这样的:
1、testA.ejs通过nodejs获取到数据库中文章的title、time、id并在网页上显示;
2、testA.ejs将文章id传给testB.ejs,testB.ejs获得文章id;
3、testB.ejs根据id来和数据库查询到对应id的文章,并显示到网页。

现在我遇到了两个问题:
1、ejs页间如何传参?
试了传统的通过href=testA.ejs?aid=来传参,但提示404.
2、在ejs模板中,怎么才能完成根据用户在文章列表中选择的文章跳转到显示对应文章详情的页面?

我能完成nodejs->js->ejs的查询数据库和存入数据库的过程,但不知如何处理多个页面的交互。因为是刚开始学,很多方面都很模糊,问的问题也小白,希望有朋友能帮我解解疑惑。非常感谢!

阿神阿神2787 天前661

全部回复(2)我来回复

  • 迷茫

    迷茫2017-04-17 11:41:00

    补充下~

    • get 将你要获取的参数传到后台,让后台返回,页面跳转
    • post 将你要处理的参数传到后台,让后台处理,页面跳转

    根据你的需求:

    可以这么写

    get   ==>  /u/id
    

    在express中这样接收

    app.get('/u/:id',function(req,res){
        var id    = req.params.id;
    
        //操作数据库方法...    
        res.render('index',{
        //页面传值...
        });   
    });
    

    也可以这么写:

    get   ==>/u?id=xxx
    

    在express中这样接收

    app.get('/u',function(req,res){
        var id    = req.query.id;
    
        //操作数据库方法...    
        res.render('index',{
        //页面传值...
        });   
    });
    

    回复
    0
  • PHPz

    PHPz2017-04-17 11:41:00

    要想跳转,就要有路由,现在假设你需要这样的效果
    /posts ==>查询数据库,拿到全部文章posts ==> 渲染到testA.ejs(单一条的链接为/post?id=XXX)
    对于单条详情:
    /post?id=XX ==>查询数据库,拿到对应id文章post ==> 渲染到testB.ejs

    稍微来点儿代码

    app.get("/posts",function(req,res){
        //查询文章
        fetchPosts(function(err,posts){
            res.render("testA.ejs",{posts:posts})//渲染到模板
        })
    })
    
    app.get("/post",function(req,res){
        var id = req.query.id
        //查询文章
        fetchPost(id, function(err,post){
            res.render("testB.ejs",{post:post})//渲染到模板
        })
    })
    

    上面只是简单的伪代码,帮助你理解这个过程,还有问题,可以留言,另外,这个问题网上例子一大堆,建议找来看看

    回复
    0
  • 取消回复