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

时间:2016-10-10 14:52:58

标签: javascript node.js express

我第一次使用Node和Express创建一个在数据库上进行CRUD操作的简单网站。当我发出我的put请求时,我无法将页面重定向到'/ index'并且我已经运行调试器for 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');

})

1 个答案:

答案 0 :(得分:0)

HTTP重定向只是告诉客户端从其他地方获取它要求的数据。它并没有告诉它以不同的方式对待它。

如果您发出Ajax请求并获得重定向响应,则浏览器将静默跟踪该重定向,并将新URL的内容返回给您的JavaScript。

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

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