2016-09-04 65 views
1

我知道這可能是一個簡單的問題,並有一個教程的地方,但我似乎無法找到它。 我生成使用express-generator一個應用,我添加了一個簡單的表格,路線表單上的表單提交留在頁上

的意見/ form.ejs

<div> 
<h1>This is <%= name %></h1> 
<form action="/form" method="POST"> 
    <input type="text" name="question" placeholder="question"><br> 
    <input type="text" name="answer" placeholder="answer"><br> 
    <input type="submit"> 
</form> 

什麼,我試圖做的是加工後的請求表單提交沒有對頁面做任何事情。基本上我希望它保持不變,所以我嘗試了以下

路線/ index.js

var express = require('express'); 
var router = express.Router(); 

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

router.get('/form', function (req, res) { 
    res.render('form', {name: "My Name"}); 
}); 

router.post('/form', function (req, res) { 
    console.log(req.body); 
}); 

module.exports = router; 

發生的事情是,瀏覽器會等待服務器的響應。我試着加入next()但它給出了一個錯誤,我也嘗試從函數返回而沒有用。 那麼我怎樣才能發佈帖子請求或處理任何路線,而無需回覆客戶?

回答

0

更新基於意見

答案傳遞參數EJS:

app.get('/form', function(req, res) { 
res.render('form.ejs', { 
    question: req.body.question, 
    answer: req.body.answer 
}); 
+0

不起作用。 'res.send({})'重定向到表單被刪除的路徑,它打印一個空的json對象 – omarwaleed

+0

它取決於你如何調用:通過ajax或完整的表單發佈。對於完整的表單發佈,做一些操作,然後重定向到/ form或者你從哪裏來的地方。 – vijayst

+0

我打電話通過完整的表格提交。重定向到表單會丟失所有數據。我想保留表格填充,而不必通過將它們傳回路由來手動插入它們。我讀過的地方,這可能只能通過Ajax或通過像角度......任何想法? – omarwaleed

1

我想這裏的問題是「你爲什麼要來?」;你想通過允許不響應客戶的發佈請求來實現什麼?

我認爲最好的辦法是做res.json(successOrFailureMessage),這樣你的客戶端應用程序就會知道發生了什麼,並且可以從那裏做一些事情(甚至沒有什麼)。否則它會在等待響應時掛起。

+0

我只想做一些數據庫操作,而不必爲客戶端提供任何響應 – omarwaleed

+0

您需要給客戶端某種響應(否則在錯誤的情況下你會怎麼做?不讓客戶知道?),您的問題在於您如何處理該響應,而不是實際發送的內容。 :) – Nimmo

+0

我完全理解你的概念,但讓我們說,如果這是一個錯誤,我會回覆一個包含錯誤消息「沒有」刷新頁面或重定向到任何地方的json。如果沒有錯誤,那麼這個json對象仍然給客戶端,但現在是空的。這裏的問題是每當'水庫。send()'被調用,視圖被改變,並且「不是」我想要發生的事情 – omarwaleed

0

更新您的post代碼:

router.post('/form', function (req, res) { 
    console.log(req.body); 
    res.render('form', {req: req.body}); 
}); 
相關問題