我是节点JS的新手。我想简单地将按钮重定向到另一个页面,但每次我尝试重定向时,我都会遇到一个无法获取/(我试图重定向到的页面)。我试图实现重定向的当前语法如下所示:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/brand', ensureAuthenticated, function(req, res) {
res.render('index');
});
我不知道我是把它放在错误的地方还是什么,但我需要一个帮助。谢谢
答案 0 :(得分:1)
这个最简单的重定向示例应该可以正常工作
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html'); // create your index.html file
});
app.get('/brand', function(req, res) {
res.redirect('/');
});
app.listen(3000, function() {
console.log('Express listening at 3000');
});
答案 1 :(得分:0)
看起来你错过了重定向的路线。
您需要定义要使用的每条路线。未定义的每条路线都将返回"不能GET / xxx"有404状态代码。
您只需添加以下内容即可定义另一条路线:
router.get('/route_path', function(req, res) {
// Do something
});
答案 2 :(得分:0)
您需要提及在收到该路线请求时要发送的文件的路径。
一种方法:
var path = require('path');
router.get('/brand', function(req, res) {
res.sendFile(path.join(__dirname,'/path/to/index.html');
}
另一种提供静态文件的方法:
app.use('/stat', express.static(__dirname + '/public'));
// allows you to access files through : localhost:port/stat/somefile
在你的前端,对于重定向的按钮:(jquery)
$('#yourBtnId').click(function() {
window.location.href = 'localhost:8080/brand';
});
答案 3 :(得分:0)
要重定向到快递js中的任何页面,您只需在控制器中使用重定向方法即可。
res.redirect('controller/method');
答案 4 :(得分:0)
您需要以下列方式要求您在app.js中显示代码的路线文件:
var routes = require('./routes/routes');
因此,对于您已定义应用并设置视图和引擎的主app.js,路线可用。
答案 5 :(得分:0)
您必须使用某些视图引擎在页面上为另一个提供服务。
让我举例说明我有一个登录玉(pug)文件。
doctype html
html
head
script(src='https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js')
body
p
| Username
input(type='text', name='username' ,id='name')
p
| Password
input(type='password', name='password' ,id='password')
p
input(type='Submit', value='Login' onclick="login()")
|
a(href='http://localhost:8000/register') New Register
p
#{error}
script.
function login(){
$.post("http://localhost:8000/login",
{
username:document.getElementById("name").value,
password:document.getElementById("password").value,
},
function(data, status){
if(data.success===true){
window.location="http://localhost:8000/welcome"
}
else{
window.location="http://localhost:8000/"
}
});
}
所以这是" login.pug" file.When" / login" api将从这个文件中调用,它将命中我的服务器api(/ login api)
app.post('/login', function(req, res, next) {
checkExistanceOfuser(req.body.username, req.body.password, function(err, flag, data) {
console.log(err);
if (err) {
res.send({
err: 'SOME_DATABASE_ERROR'
})
} else {
if (flag) {
req.session.user = data;
res.send({
success: true,
message: 'Login Success'
})
} else {
res.send({
success: false,
message: 'Invalid Credentials'
});
}
}
})
});
取决于帖子回复`" window.location"我改变了观点。 例如,成功登录响应后,我将其发送到
http://localhost:8000/welcome
现在,这会在/welcome
API上调用get请求。我在服务器
app.get('/welcome', function(req, res, next) {
if (req.session && req.session.user) {
res.render('welcome', { name: req.session.user.name })
} else {
res.render('login', { error: 'Invalid Session' });
}
});
通过这种方式,您可以更改视图。
也许它会有所帮助。