Как я могу отправить статус успеха в браузер из nodejs / express?
Я написал следующий фрагмент кода на моем сервере nodeJS/Expressjs:
app.post('/settings', function(req, res){
var myData = {
a: req.param('a')
,b: req.param('b')
,c: req.param('c')
,d: req.param('d')
}
var outputFilename = 'config.json';
fs.writeFile(outputFilename, JSON.stringify(myData, null, 4), function(err) {
if(err) {
console.log(err);
} else {
console.log("Config file as been overwriten");
}
});
});
Это позволяет мне получить отправленные данные формы и записать их в файл JSON.
это отлично работает. Но клиент остается в каком-то состоянии публикации и в конечном итоге тайм-аут. Поэтому мне нужно отправить клиенту какое-то состояние успеха или заголовок успеха.
Как мне это сделать?
спасибо заранее!
4 ответов
просто хотел добавить, что вы можете отправить json через res.json()
помощником.
res.json({ok:true}); // status 200 is default
res.json(500, {error:"internal server error"}); // status 500
обновление 2015:
res.json(status, obj)
был осужден в пользу res.status(status).json(obj)
res.status(500).json({error: "Internal server error"});
Jup, вам нужно отправить ответ назад, самый простой будет
res.send(200);
внутри обработчика обратного вызова writeFile
.
200-это код состояния HTTP, поэтому вы можете даже изменить это в случае сбоя:
if (err) {
res.send(500);
} else {
res.send(200);
}
в express 4 Вы должны сделать:
res.status(200).json({status:"ok"})
вместо устаревших:
res.json(200,{status:"ok"})