2015-04-27 52 views
3

在由express application generator創建的存根中,我創建了一個名爲test的新視圖。由app.post觸發的快速res.render

我無法使用調用test

app.post('/test', function(req, res, next) { 
    res.render('test'); 
}); 

這似乎令人驚訝,因爲下面app.get是越來越呈現爲預期:

app.get('/test', function(req, res, next) { 
    res.render('test'); 
}); 

我進一步嘗試以下,但它仍然是不呈現頁面:

app.post('/test', function(req, res, next) { 
    console.log('within app.post'); // this is getting logged 
    res.redirect('/test'); 
}); 

請認真閱讀e幫助。我如何從post方法渲染test

+1

你如何使POST請求? – vanadium23

+0

@ vanadium23 ...我正在使用jquery'$ .ajax({url:「/ test」, type:「POST」})' –

+0

嘗試發送一些json回到res.send({some:' json'});找到它是模板問題。 – vanadium23

回答

3

所以可能有JavaScript代碼的問題。我在下面添加的代碼路徑文件夾到文件index.js,和模板渲染:

router.get('/test', function(req, res, next) { 
    res.render('index', {title: 'GET test'}); 
}); 

router.post('/test', function(req, res, next) { 
    res.render('index', {title: 'POST test'}); 
}); 

嘗試通過捲曲發送請求:

curl -v -XPOST http://localhost:3000/test 

或者使用Chrome或Firefox擴展,使請求。

+0

我認爲問題與如何我使用$ .ajax調用POST ...刪除'contentType:「application/json」'解決了我的問題。謝謝。 –

+0

@KayaToast我有同樣的問題,你能描述你是如何解決它的? – 01axel01christian

0

好像你正在用redirectrender混淆,因爲按我的知識,你需要有一個路由器的方法,這將使得所需的頁面,只要你想在該網頁上的土地可以使用redirect通話。對於例如

// This will render the index.html page 
app.get('/login', function(req,res) { 
    res.render('index.html'); 
}); 

// This will redirect to above page 
app.post('/homepage', function(req,res) { 
    res.redirect('/login'); 
}); 
+0

這是進一步的問題。頂部有一個res.render的例子。 – vanadium23

+0

我的意思是使用不同的路徑路徑。正如你對你的例子所做的那樣,你已經使用了相同的路徑來渲染和重定向。使用動詞來渲染頁面並將其重定向到它。 –

+1

@PriyanshuShekhar剛剛嘗試過。沒有渲染。謝謝 –

0

我不知道這是否是最好的方法,但你真的想要在每個路線的一個地方渲染。我使用.all()來處理頁面渲染,無論是否發佈了某些內容。

app.post('/test', function(req, res, next) { 
    // Do something with posted data 
    next(); 
}) 
app.all('/test', function(req, res) { 
    // res.render the page 
});