在对Node的PUT请求中无法重定向到另一个页面

Cannot redirect to another page in PUT request for Node

本文关键字:重定向 另一个 Node PUT 请求 在对      更新时间:2023-09-26

我第一次使用Node和Express来制作一个简单的网站,在数据库上进行CRUD操作。当我发出put请求时,我无法将页面重定向到'/index',并且我已经运行了express调试器并且没有看到任何异常,页面根本没有改变。任何想法吗?下面是server.js

中的代码
app.set('view engine', 'ejs')
app.all('/', function(req,res){
  var cursor = db.collection('jobs').find().toArray(function(err, results) {
     res.render('index.ejs', {jobs: results})
    })
})
app.get('/index',function (req, res) {
    res.sendFile(__dirname + '/index.html');
})

app.get('/view',function (req, res) {
    var cursor = db.collection('jobs').find().toArray(function(err, results) {
     res.render('index.ejs', {jobs: results})
    })
})
app.post('/jobs', function(req, res) {
    db.collection('jobs').save(req.body,function(err, result){
    if (err) return console.log(err)
    console.log('saved to database');
    res.redirect('/view');
  })
})
app.put('/view', function(req, res) {
    res.redirect(303, '/index');
})

HTTP重定向只是告诉客户端从其他地方获取它所请求的数据。它没有告诉它要区别对待它。

如果您发出一个Ajax请求并获得一个重定向响应,那么浏览器将静默地遵循该重定向并将新URL的内容返回给您的JavaScript。

浏览器不会看到重定向,并决定在视图中加载一个新页面,而不是将数据呈现给JavaScript。

如果您想在发出PUT请求后加载一个新页面,那么您需要等待响应进入,然后(例如)为window.location.href分配一个新值。