2016-09-27 10 views
0

我需要的是改變value2在服務器端,並刷新視圖,這樣的問題是:的Node.js隨着快遞和EJS鑑於更新的單個元素

如何更新和刷新視圖但只有新的value2

服務器:

var express = require("express"); 
var app = express(); 
app.set('view engine', 'ejs'); 
app.set('view cache', false); 

app.set('title', 'Test'); 

var bodyParser=require("body-parser"); 

app.use(bodyParser.urlencoded({ 
    extended: true 
})); 

app.use(express.static('public')); 

app.get('/', function(req, res, next) { 
    res.render('test', { value1: 'A', value2: 'B', value3: 'C', value4: 'D' }); 
}); 

app.post('/', function(req, res, next) { 
// I don't know value1, value3 and value4 :(
// and the Next line doesn't work 
    res.render('test', { value2: 'X' }); 
}); 

app.listen(3001); 

客戶:

<!DOCTYPE html> 
<html> 
<head> 
    <title> Hi </title> 
</head> 
<body> 
    <form id="update" method="post" action="/" > 
     <h2> This is Value1 (<%= value1 %>) and This is Value2 (<%= value2 %>) </h2> 
     <h2> This is Value3 (<%= value3 %>) and This is Value4 (<%= value4 %>) </h2> 
     <button type="submit" >Change Value2</button> 
    </form> 
</body> 
</html> 

回答

0

你可能喜歡使用隱藏的輸入元素(<input type="hidden">)。所以,你的HTML將

<!DOCTYPE html> 
<html> 
<head> 
    <title> Hi </title> 
</head> 
<body> 
    <form id="update" method="post" action="/" > 
     <input type="hidden" name="value1" value="<%= value1 %>"> 
     <input type="hidden" name="value2" value="<%= value2 %>"> 
     <input type="hidden" name="value3" value="<%= value3 %>"> 
     <input type="hidden" name="value4" value="<%= value4 %>"> 
     <h2> This is Value1 (<%= value1 %>) and This is Value2 (<%= value2 %>) </h2> 
     <h2> This is Value3 (<%= value3 %>) and This is Value4 (<%= value4 %>) </h2> 
     <button type="submit" >Change Value2</button> 
    </form> 
</body> 
</html> 

,你需要更新你的req.post路線如下

app.post('/', function(req, res, next) { 
    res.render('test', { value1: req.body.value1, value2: 'X', value3: req.body.value3, value4: req.body.value4 }); 
});