2016-10-10 59 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分配新值。

相關問題