2016-10-10 31 views
0

我首次使用Node和Express创建了一个简单的网站,可以在数据库上执行CRUD操作。当我发出我的put请求时,我无法将页面重定向到'/ index',并且我运行了调试器来表达并且没有看到任何异常,页面根本不会改变。有什么想法吗?下面是server.js无法重定向到节点上的PUT请求中的另一个页面

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

你是如何制作PUT请求的?你如何测试“改变页面”? – Quentin

+0

我认为问题是http状态303与PUT。尝试改为302或不使用。 –

+0

@LucasCosta - 302将是一个坏主意,客户应该使用相同的请求方法。 OP可能不希望客户端向'/'发出PUT请求。 (虽然我不明白他们为什么希望客户端使用'/ view'而不是'/ view/a-specific-thing')。 – Quentin

回答

0

HTTP重定向代码只是告诉客户端得到它要求从别的地方的数据。它没有告诉它以任何不同的方式对待它。

如果您发出Ajax请求并获得重定向响应,那么浏览器将按照默认方式进行重定向,并将新URL的内容返回给您的JavaScript。

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

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

相关问题