在我的nodejs应用程序中,我有路由/登录,它使用sendFile显示我的html文件,它取名字和密码。在我的服务器端app.js我写了一个名字和密码的调用。现在从我的html Iam做一个ajax调用调用post调用,如果成功,我想去/ admin页面。为此我想在我的休息调用中调用res.send()。但是我不知道如何发送html文件.. < / p>
app.get('/', function(req, res, next) {
res.sendFile(__dirname + '/public/views/home.html');
});
app.get('/login', function(req, res, next) {
res.send('respond with a resource');
res.sendFile(__dirname + '/public/views/login.html');
});
app.get('/admin', function(req, res, next) {
res.sendFile(__dirname + '/public/views/admin.html');
});
app.post('/verifylogin',function(req,res){
var username = req.headers.uname;
var password = req.headers.pwd;
var uname = "admin";
var pwd = "admin";
var login = false;
if(uname == username && pwd == password){
console.log("success");
login = true;
} else {
console.log("fail");
login = false;
}
if(login == true){
res.send();//how can I take to /admin here
} else {
res.send("Bad luck");
}
});
HTML
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
function login(){
var uname = document.getElementById('uname').value;
var pwd = document.getElementById('pwd').value;
$.ajax({
url : '/verifylogin',
type : "POST",
headers : {
"uname":uname,
"pwd" :pwd
}
});
console.log("name",uname);
}
</script>
<h1>Login</h1>
<p>
<label class="control-label">Username</label>
<input type="text" placeholder="Username" id="uname"/>
</p>
<p>
<label class="control-label">Password</label>
<input type="password" placeholder="Password" id="pwd"/><br/>
</p>
<p>
<button type="submit" class="btn btn-primary" onclick="login()">Login</button>
</p>
如果登录成功,我怎样才能路由到/ admin ..有人可以帮忙!
答案 0 :(得分:1)
正如@jfriend00所说,浏览器不会从ajax调用重定向。所以你可以做我将要展示的两个选项中的一个。
1º选项:
客户端:删除ajax脚本并通过html表单处理调用。
将表单添加到您的html页面:
<form method="post" action="/verifylogin">
<label class="control-label">Username</label>
<input type="text" placeholder="Username" name="uname"/>
<label class="control-label">Password</label>
<input type="password" placeholder="Password" name="pwd"/>
<button type="submit" class="btn btn-primary">Login</button>
</form>
服务器强>:
使用redirect
方法代替send
重定向到指定的网址。
if (login == true) {
res.redirect('/admin');
}
2º选项:将页面作为内容发送到ajax调用并将页面重定向到该页面。
<强>客户端强>:
在你的ajax帖子上添加成功功能:
$.ajax({
url : '/verifylogin',
type : "POST",
headers : {
"uname":uname,
"pwd" :pwd
},
success: function(data) {
window.location = data;
}
});
服务器强>:
if(login == true) {
res.contentType('application/json');
var data = JSON.stringify('your_url') // im not sure if you can use relative path here
res.header('Content-Length', data.length);
res.end(data);
}