重定向方法无法按预期工作。它无法获取具有相对路径的页面。如果绝对是罚款。比如https://www.google.com。但是当我把相对路径index.html与post.html目录相同时。它无法取得它。如果输入表单值为admin,则从代码中将页面重定向到index.html
节点脚本
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
// Create connection
$conn = new mysqli($servername, $username, $password,$dbname);
if ($conn->connect_error)
{
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id FROM products where name='$prod'";
$result = $conn->query($sql);
if (!$result)
{
echo("Error description: " . mysqli_error($conn));
}
// if there is one record only
$row = $result->fetch_assoc();
$id = ($row['id']);
echo $id;
//if there is a multiple records
while($row = $result->fetch_assoc())
{
echo "id: " . $row["id"]. "<br>";
}
html脚本
const express = require('express');
const app = express();
const http = require('http').Server(app);
const bodyParser = require('body-parser');
app.use(express.urlencoded({ extended: true }));
app.get('/', (req, res) => res.sendFile(__dirname + '/post.html'));
app.post('/', function(req, res){
var username = req.body.username;
if(username == 'admin'){
res.redirect(__dirname + '/index.html');
}
res.end();
});
http.listen(80, function(){
console.log('Listening on *:80');
});
答案 0 :(得分:1)
首先,您需要将index.html
文件公开给客户,现在他们只能访问post.html
。
为此,您可以为索引页面添加新路由,也可以使用express.static()
来提供文件。
如果您想使用第一个解决方案,请添加如下路线:
app.get('/index', (req, res) => res.sendFile(__dirname + '/index.html'));
然后在下一个块中重定向到它:
app.post('/', function(req, res){
var username = req.body.username;
if(username == 'admin'){
res.redirect('/index');
}
res.end();
});
如果您想使用express.static()
,您可以这样做:
将您希望客户端访问的文件放在应用程序根目录(节点脚本所在的位置)的另一个目录中(这通常称为&#34; public&#34;)。之后使用express.static()
函数告诉Express像Apache服务器那样提供目录:
app.use(express.static(__dirname + 'public'))
之后,您可以将客户端重定向到/index.html
app.post('/', function(req, res){
var username = req.body.username;
if(username == 'admin'){
res.redirect('/index.html');
}
res.end();
});
答案 1 :(得分:0)
我认为您并不了解redirect
的工作原理。只需查看文档expressjs.com#res.redirect即可。
在那里,您可以发现只能使用redirect
方法从一个路径移动到另一个路径。
无论如何,你错误地使用了它。
此代码不起作用:res.redirect(__dirname + '/index.html');
答案 2 :(得分:0)
__dirname + '/index.html'
这将是:
"C:/some/crazy/path/index.html"
现在这将发送给客户端。而且这不仅可以通过线路访问本地文件系统,原因很简单。因此,不是重定向到某个文件(不起作用),而只是重定向到服务器托管的URL(提示:index.html
不是路由):
res.redirect("/");