Express实现页面跳转 您所在的位置:网站首页 express重定向 Express实现页面跳转

Express实现页面跳转

#Express实现页面跳转| 来源: 网络整理| 查看: 265

之前的思路是页面获取登录名和密码之后,利用Ajax请求传输数据,然后在路由处理里面利用SQL获取数据库数据,进行校验之后利用res.redirect()进行跳转,但是一直出错,出现了好几个问题,下面讲述问题和原因。

1.首先Ajax一般只是用来传输数据,不是用于进行页面跳转

因为Ajax使用之后他是一个完整的一个请求和回调的过程,在这个过程里面只存在一个HTTP表头,如果你重定向就会重复,就会报错。使用Ajax就是在同一个界面的东西,不能重定向到其他界面就打破Ajax的整个请求过程,因为redirect这个函数改变的是Ajax请求中间的定向,这就打破了Ajax整个流程。

所以如果你想做一个登陆界面,那么只有Ajax返回打开下一步的url,然后前端进行调转吧。或者不用Ajax。

2.报错Can’t set headers after they are sent.

例如我在路由处理时候这么写:

// 登陆信息验证 router.all('/test1',function (req,res,next) { //接收传输过来的邮箱和密码 var username = req.query.username; var password = req.query.password; // username 和 password 都是string类型 console.log('a '+typeof(username)); console.log('b '+ password); // 连接数据库 var connection = mysql.createConnection({ //创建mysql实例 host:'127.0.0.1', port:'3306', user:'root', password:'', database:'test' }); connection.connect(); var sql = 'SELECT passwd FROM users where username = ' + username ; connection.query(sql, function (err,result) { var result1 = result[0].passwd; console.log('3'+result1) // 输出3123 if(err){ res.send(500); console.log('[SELECT ERROR]:',err.message); } else{ if(password == result1){ //登陆成功,进行页面的跳转 console.log("登陆成功"); res.send(200); }else{ res.send(404); console.log("密码错误"); }; } }); connection.end(); return res.send(username); });

就会报错:Can’t set headers after they are sent.,测试了下不能使用多个res.send(),但是按照网上



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有