搜索
node.js - express 中收到get请求如何根据参数进行路由处理?
巴扎黑
巴扎黑 2017-04-17 13:45:22
[Node.js讨论组]

在提交表单之前,先进行两次请求响应操作

想要实现的效果如下

app.all('/form',functuon(req,res,next){
    if(req.query.key1){
       res.redirect('/form/getkey1');
    }
    if(req.query.key2){
       res.redirect('/form/getkey2');
    }
    if(req.query.key3){
       res.redirect('/form/getkey3');
    }
});

但是实验过程中,第一个可以成功重定向,第二个就不能重定向,请大神指教,不胜感谢。

巴扎黑
巴扎黑

全部回复(2)
PHP中文网

好像是因为res.redirect()只能使用一次,你请求一次服务器返回也应该是一次,而不是多次

大家讲道理
  1. 路由参数用:param, 例如:路由写成"/form/:key", 你就可以通过req.params.key获得路由参数了。我不知道你为什么要这样写。

  2. 关于res.end()、res.redirect()、res.render()等 最好写成return式,不然可能会造成res重复返回,具体如下:

    app.all('/form',functuon(req,res,next){
        if(req.query.key1){
           return res.redirect('/form/getkey1');
        }
        if(req.query.key2){
           return res.redirect('/form/getkey2');
        }
        if(req.query.key3){
           return res.redirect('/form/getkey3');
        }
    });

关于你的bug, if(req.query.key1)表示key1不为转义false(null、undefined、false、0)的时候执行if内的语句,那么请问,你的key1会为转义false吗?如果永远不会,那就永远会执行第一个if。对你代码的理解是有三个key,key1、key2、key3会被提交,那key1就永远不为false。 说白了,不理解你这样写的原因... 你可以再补充下。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号